埃氏筛/欧拉筛模板

素数筛:筛取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;
		}
	}
}

posted @   Marinaco  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示