欧拉筛

int prime[1100000],primesize;
bool isprime[11000000];
void getlist(int listsize){
    memset(isprime,1,sizeof(isprime));
    isprime[1]=false;
    for(int i=2;i<=listsize;i++){
        if(isprime[i])prime[++primesize]=i;
         for(int j=1;j<=primesize&&i*prime[j]<=listsize;j++) {
            isprime[i*prime[j]]=false;
            if(i%prime[j]==0) break;//保证了每个合数只会被它的最小素因子筛掉,就把复杂度降到了O(N)
        }
    }
}

 

posted @ 2021-01-13 21:07  _LH2000  阅读(53)  评论(0编辑  收藏  举报