//const int maxn = 20000;
vector<int>prime; //储存素数
vector<bool>vis(maxn , false); //vis[i] = false 的为素数
void Prime(){
vis[1] = 1 , vis[0] = 1;
for(int i = 2;i <= maxn; i++){
if(!vis[i]){
prime.push_back(i);
}
for(int j = 0;j < prime.size() && i * prime[j] <= maxn;j ++){
vis[i * prime[j]] = true;
if (i % prime[j] == 0){
break;
}
}
}
}
欧拉筛法(模板)
最新推荐文章于 2024-09-14 20:03:08 发布
该博客介绍了如何使用动态标记和遍历方法生成小于给定最大值的素数。首先初始化一个布尔数组vis,然后通过遍历从2到[maxn],找到素数并存入prime向量。同时,利用vis数组标记其倍数,避免重复检查。
摘要由CSDN通过智能技术生成