1:Eratosthenes筛选法
算法描述O(NloglogN): 时间复杂度的推断》》Knuth,Volume 2,page 394
Eratosthenes筛是一种用于计算小于N的所有素数的方法。我们从制作整数2到N的表开始。我们找出最小的未被删除的整数i,打印i,然后删除i,2i,3i,......。当i>
√N时,算法终止。
算法代码:
void Eratosthenes(int n)
{
for (int i = 2; i < n+1; i++)
a[i]=1;
for (int i = 2; i <= sqrt(n); i++)
{
if(a[i]==1)
{
int j=2;
while(i*j <= n)
{
a[i*j]=0;
j++;
}
}
}
for (int i = 2; i <= n; i++)
if(a[i]==1)
cout<<i<<" ";
}