素数判定

埃氏筛法

 1 void slove()
 2 {
 3     int p=0;
 4     book[0]=1;
 5     book[1]=1;//0,1不是素数
 6     for(int i=2; i<=n; i++)
 7     {
 8         if(book[i]==0)       
 9         {
10             prime[p++]=i;//计算、记录下了素数
11             for(int j = 2 * i; j <= n; j += i)// 除掉了i的倍数
12                book[j]=1;
13         }
14     }
15 }

欧拉筛法

 1 void pri()
 2 {
 3     int p=0;
 4     for(int i=2;i<=n;i++)
 5     {
 6         if(book[i]==0)
 7             a[p++]=i;
 8         for(int j=1;(j<p)&&( i*a[j]<=n );j++)
 9         {
10             book[ a[j]*i ]=1;
11             if(i%a[j]==0)
12                 break;
13         }
14     }
15 }
原文地址:https://www.cnblogs.com/OFSHK/p/11330501.html