素数判定
埃氏筛法
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 }