素数筛:筛取1~n范围内的素数
埃氏筛
时间复杂度O(nloglogn)
vector<int>prim;
bool vis[maxn];
void e(int n){rep(i,2,n){if(!vis[i]){prim.pb(i);for(int j=i*i;j<=n;j+=i)vis[j]=true;}}
}
欧拉筛
时间复杂度O(n)
vector<int>prim;
bool vis[maxn];
void euler(int n){rep(i,2,n){if(!vis[i])prim.pb(i);for(int j=0;i*prim[j]<=n&&j<prim.size();j++){vis[i*prim[j]]=true;if(i%prim[j]==0)break;}}
}