埃式筛法(时间复杂度O(nlogn))
code:
void init()
{
for(int i=2;i<N;i++){
if(!vis[i]) prime[cnt++]=i;
for(int j = 1ll*i*i;j<N;j+= i){
vis[j]=1;
}
}
}
欧拉筛法(O(n))
code:
void init(){
for(int i=2;i<N;i++){
if(!vis[i]) prime[cnt++]=i;
for(int j=0;j<cnt&&1ll*i*1ll*prime[j]<N;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0) break;//遇见第一个i的质因子的时候退出
}
}
}