Public Function IsPrime(ByVal n As Integer) As Boolean
If n < 4 Then Return True
If n Mod 2 = 0 Then Return False
Dim k As Integer = Math.Floor(Math.Sqrt(n))
For i = 3 To k Step 2
If n Mod i = 0 Then Return False
Next
Return True
End Function
快速生成n以内的素数
Public Function GetPrime(ByVal n As Long) As Long()
Dim arr(n + 1) As Boolean
For i As Long = 2 To n / 2
For j As Long = 2 To i
Dim r As Long = i * j
If r > n Then Exit For
If Not arr(r) Then arr(r) = True
Next
Next
Dim list As New List(Of Long)
For i As Long = 2 To n
If Not arr(i) Then list.Add(i)
Next
Return list.ToArray
End Function
http://acm.buaa.edu.cn/problem/187/
#include <iostream>
#include <cmath>
using namespace std;
unsigned short p[1000];
int main(void)
{
bool is_prime;
int c=2,k;
p[0]=2;p[1]=3;
for(int i=5;i<7920;i+=2)
{
is_prime=true;
k=sqrt((double)i)+1;
for(int j=1;j<c-1;j++)
{
if(p[j]>=k){break;}
if(i%p[j]==0){is_prime=false;break;}
}
if(is_prime){p[c]=i;c++;}
}
int n;
while(cin>>n)
{cout<<p[n-1]<<endl;}
return 0;
}
本文提供了两种不同的算法实现来生成特定范围内的素数:一种使用VBA编写,适用于较小的数值范围;另一种采用C++实现,可以高效地处理更大的数据集。通过这两种方法,读者能够了解到如何有效地筛选出素数,并理解其背后的数学原理。
1221

被折叠的 条评论
为什么被折叠?



