欧拉素数筛

1 for(int i=2;i<=n;++i){
2     if(!vis[i])p[++cnt]=i;
3     for(int j=1;j<=cnt;++j){
4         if(i*p[j]>n)break;//超过n 
5         vis[i*p[j]]=true;
6         if(i%p[j]==0)break;//保证每个合数被它最小的质因数筛掉(保证算法O(n)复杂度) 
7     }
8 }

 

posted @ 2016-11-17 15:12  WJ-Ting  阅读(124)  评论(0编辑  收藏  举报