第一种:简单好记,一般够用
void init(){
fg[0]=fg[1]=1;
for(int i=2;i<maxn;++i){
if(!fg[i]){
prime[++cnt]=i;
for(int j=i;j*i<maxn;++j){
fg[i*j]=1;
}
}
}
}
第二种:稍微难记一点,但是更快原理可以参考一下这篇
void init(){
fg[0]=fg[1]=1;
for(int i=2;i<maxn;++i){
if(!fg[i]) prime[++cnt]=i;
for(int j=1;j<=cnt && i*prime[j]<maxn;++j){
fg[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}