1. 程式人生 > >一般數篩到歐拉篩

一般數篩到歐拉篩

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 int
t,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 }

一般數篩到歐拉篩