Eratosthenes筛选法构造1-n 素数表

Posted shuoed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eratosthenes筛选法构造1-n 素数表相关的知识,希望对你有一定的参考价值。

筛选法:对于不超过n的每个非负整数p,删除2p,3p,4p...当处理完所有数之后,还没没删除的就是素数。

代码中进行了相应的优化。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int vis[10000];
 4 int main()
 5 {
 6     int n;
 7     while(scanf("%d",&n))
 8     {
 9         //--------------
10         int m=sqrt(n+0.5);
11         memset(vis,0,sizeof(vis));
12         for(int i=2; i<=m; i++)
13             if(!vis[i])
14                 for(int j=i*i; j<=n; j+=i)
15                     vis[j]=1;
16         //---------------
17         for(int i=2; i<=n; i++)
18             if(!vis[i])
19                 printf(" %d",i);
20     }
21 }

 

以上是关于Eratosthenes筛选法构造1-n 素数表的主要内容,如果未能解决你的问题,请参考以下文章

筛选 Eratosthenes 素数高达一百万 c++

素数筛选法

素数Eratosthenes筛选

数论模板总结 -- 未完待续

关于Eratosthenes筛子算法筛选小于n的素数的理解

小航的算法日记素数筛选