线性筛素数

方法一:

简单易懂

View Code
 1 const int maxn = 10005 ;

 2 int prime[ maxn ],shu[ maxn ];

 3 void get_prime(){

 4     for( int i=1;i<maxn;i+=2 ) shu[ i ]=1;

 5     for( int i=0;i<maxn;i+=2 ) shu[ i ]=0;

 6     shu[ 1 ]=0,shu[ 2 ]=1;

 7     for( int i=3;i<maxn;i+=2 ){

 8         if( shu[ i ]==1 ){

 9             int t,delta;

10             delta=i*2;

11             t=delta+i;

12             while( t<maxn ){

13                 shu[ t ]=0;

14                 t+=delta;

15             }

16         }

17     }

18     prime[ 1 ]=2;

19     int cnt=2;

20     for( int i=3;i<(int)(sqrt(maxn*1.0));i++ ){

21         if( shu[ i ]==1 ) prime[ cnt++ ]=i;

22     }

23 }

 

你可能感兴趣的:(素数)