线性筛素数

方法一:

简单易懂

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 }
keep moving...
原文地址:https://www.cnblogs.com/xxx0624/p/2828672.html