欧拉筛
欧拉筛
文章部分内容转载自算法学习笔记(17): 素数筛 - 知乎 (zhihu.com)、欧拉筛筛素数 - 洛谷专栏 (luogu.com.cn),如有侵权,请联系作者删除。
不想再写一遍原理了qwq(如果忘记原理就去看看大佬们的详细证明吧,感觉注释也说得很清楚了@w@)。
算法学习笔记(17): 素数筛 - 知乎 (zhihu.com)
所以我就直接贴上欧拉筛的模板了。
【模板】线性筛素数
题目背景
本题已更新,从判断素数改为了查询第 \(k\) 小的素数
提示:如果你使用cin
来读入,建议使用std::ios::sync_with_stdio(0)
来加速。题目描述
如题,给定一个范围 \(n\),有 \(q\) 个询问,每次输出第 \(k\) 小的素数。
输入格式
第一行包含两个正整数 \(n,q\),分别表示查询的范围和查询的个数。
接下来 \(q\) 行每行一个正整数 \(k\),表示查询第 \(k\) 小的素数。
输出格式
输出 \(q\) 行,每行一个正整数表示答案。
样例 #1
样例输入 #1
100 5
1
2
3
4
5样例输出 #1
2
3
5
7
11提示
【数据范围】
对于 \(100\%\) 的数据,\(n = 10^8\),\(1 \le q \le 10^6\),保证查询的素数不大于 \(n\)。Data by NaCly_Fish.
学委大佬的代码:
|
pecco大佬的代码:
bool isnp[MAXN]; |
两者的写法其实很相似了,如果忘记了原理,可以先看看学委大佬的,要写题的话,推荐用pecco大佬的板子。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Heavenhold!