一般數篩到歐拉篩
阿新 • • 發佈:2019-04-16
int name ++ prim += space \n col clu
數篩用來確定素數
初始想法
1 #include<bits/stdc++.h> 2 using namespace std; 3 int prime[40004],num[40004]; 4 void isprime() 5 { 6 int c=0; 7 for(int i=2;i<=40004;i++) 8 { 9 if(!num[i]) 10 { 11 prime[c++]=i; 12 for(int j=i;j<=40004;j+=i) 13 { 14 num[j]=1; 15 } 16 } 17 } 18 } 19 int main() 20 { 21 isprime(); 22 for(int i=1;i<=400;i++) 23 printf("%d\n",prime[i]); 24 }
歐拉篩:
1 #include<bits/stdc++.h> 2 using namespace std; 3 intt,prime[40005],num[40005]; 4 void isprime() 5 { 6 int c=0; 7 for(int i=1; i<=40000; i++) 8 num[i]=1; 9 for(int i=2; i<=40000; i++) 10 { 11 if(num[i]==1) 12 prime[c++]=i; 13 for(int j=0; j<c&&prime[j]*i<40000; j++) 14 { 15 num[prime[j]*i]=0; 16 if(i%prime[j]==0) 17 break; 18 } 19 } 20 } 21 int main() 22 { 23 isprime(); 24 for(int i=1;i<=400;i++) 25 printf("%d\n",prime[i]); 26 }
一般數篩到歐拉篩