素数筛

 

 

朴素素数筛

bool isprime(int n)
{
    if(n==1) return 1;
    int t=sqrt(n);
    for(int i=2;i<=t;++i)
        if(n%i==0) return 1;
    return 0;
}

埃氏筛:

const int maxn=1e5+10;
int prime[maxn];
void init(int n){
    //prime[0]=prime[1]=1;//0和1既不是素数也不是合数
    for(int i=2;i<=n;++i){
        if(!prime[i]){
            for(int j=i*i;j<n;j+=i)
                prime[j]=1;
        }
    }
}

 

欧拉筛:

 

posted @ 2020-03-09 09:07  waryan  阅读(127)  评论(0)    收藏  举报