线性筛素数方法

线性筛素数方法

#include < iostream >
using   namespace  std;

#define  Max 1000000
int  pr,prim[ 670000 ];
bool  bo[Max];
int  main()
{
    pr
= 0 ;
    memset(bo,
0 , sizeof (bo));
    
for ( int  i = 2 ;i < Max; ++ i){
        
if ( ! bo[i])
            prim[pr
++ ] = i;
        
for ( int  j = 0 ;j < pr && prim[j] * i < Max; ++ j){
            bo[prim[j]
* i] = 1 ;
            
if (i % prim[j] == 0 break ;
        }
    }
    cout
<< pr << endl;
    
/* int k=1;
    for(int i=0;i<pr;++i){
        if(k%100==0)
            printf("%d\n",prim[i]);
        else printf("%d ",prim[i]);
        k++;
    }
*/
    
return   0 ;
}




你可能感兴趣的:(线性筛素数方法)