筛法求素数 函数模板

 1 const int MAX=20000000;
 2 //an存储素数数组,下标从0开始,个数为num
 3 int an[2000000],num;
 4 bool bn[MAX+10];
 5 
 6 void prime()
 7 {
 8     num = 0;
 9     memset(bn,1,sizeof(bn));
10     bn[0] = bn[1] = 0;
11     for(int i = 2;i<MAX;i++)
12     {
13         if(bn[i]) an[num++] = i;
14         for(int j = 0;j<num&&an[j]*i<MAX;j++)
15         {
16             bn[an[j]*i] = 0;
17             if(i%an[j] == 0) break;
18         }
19     }
20 }
View Code

 

posted @ 2015-07-24 12:35  相儒以沫  阅读(104)  评论(0编辑  收藏  举报