埃氏筛/欧拉筛模板
素数筛:筛取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;
}
}
}

浙公网安备 33010602011771号