筛法求素数

插一个好的微博:https://blog.csdn.net/whereisherofrom/article/details/78922648

思想:从2开始找起,2的倍数,即不是素数,以此类推。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<set>
 4 using namespace std;
 5 const int maxm=10006;
 6 set<int> prime;
 7 bool num[maxm];
 8 void pri()
 9 {
10     prime.clear();
11     memset( num, false, sizeof num);
12     num[0]=num[1]=1;
13     for(int i=2;i<maxm;i++){
14         if(!num[i]){
15             prime.insert(i);
16             for(int j=i*2;j<maxm;j+=i){
17                 num[j]=1;
18             }
19         }
20     }
21 }
22 
23 int main()
24 {
25     int N;
26     pri();
27     return 0;
28 }

运用stl的set存放后可以快速查出该数是否为素数。

posted @ 2018-04-10 22:41  flyer_duck  阅读(225)  评论(0编辑  收藏  举报