我是靠谱客的博主 独特火龙果,最近开发中收集的这篇文章主要介绍筛质数——欧拉筛(线性筛)欧拉筛(线性筛)板子题目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

筛质数有两个板子,埃氏筛和欧拉筛,欧拉筛是线性的,背一个欧拉筛就够了

欧拉筛(线性筛)板子

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6+10;
int prim[N]; //存储质数
bool vis[N]; //标记合数
int cnt; //总个数
int main(){
int n;
cin >> n;
for(int i = 2; i <= n; ++i){//质数从2开始遍历
if(!vis[i]) prim[cnt++] = i; //i不为合数时,放进质数数组
for(int j = 0;1ll*i*prim[j] <=n ; ++j){ //标记当前数i X 之前筛出来的质数 得到的合数
vis[i*prim[j]] = 1;
if(i%prim[j]==0) break; //整除中断
}
}
cout << cnt << endl;
return 0;
}

题目

题目难度
Acwing.筛质数模板题
洛谷.【模板】线性筛素数模板题

最后

以上就是独特火龙果为你收集整理的筛质数——欧拉筛(线性筛)欧拉筛(线性筛)板子题目的全部内容,希望文章能够帮你解决筛质数——欧拉筛(线性筛)欧拉筛(线性筛)板子题目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部