-
素数(超详细!!!)
整数惟一分解定理
素数筛法
给定n,求出1~n之间所有的质数。
一、Eratosthenes筛法
(☒此处本应有一幅动图,然鹅我并不知道该如何显示动图(。-ω-)-ω-)-ω-)
Eratosthenes筛法思想
二、欧拉筛法(线性筛)
埃氏筛法中以n=30为例,30这个数被筛了3次,分别是:
2*15(p=2)
3*10(p=3)
5*6(p=5)
枚举 2~n 中的每一个数 i:
如果 i 是素数则保存到素数表中;
利用 i 和素数表中的素数 prime[j] 去筛除 i*prime[j] ,为了确保i*prime[j] 只被素数 prime[j] 筛除过这一次,要确保 prime[j] 是i*prime[j] 中最小的素因子,即 i 中不能有比 prime[j] 还要小的素因子。
写法一:(仅用于判断)
写法二:(可求出每个数的最小质因子)
素数筛法优化素因数分解
只要在判定素数时记录下每个数值的最小素因数即可。
一道肥肠简单的模板题——
【例 1】Prime Distance(信息学奥赛一本通 1619)
【题目描述】
给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。
【输入】
多组数据。每行两个数 L,R。
【输出】
详见输出样例。
【输入样例】
2 17
14 17
【输出样例】
2,3 are closest, 7,11 are most distant.
There are no adjacent primes.
-
相关阅读:
LeetCode208 实现 Trie (前缀树)
LeetCode289 生命游戏(模拟)
LeetCode560 和为 K 的子数组
LeetCode673 最长递增子序列的个数
LeetCode31 下一个排列
LeetCode926 将字符串翻转到单调递增
LeetCode135 分发糖果
LeetCode810 黑板异或游戏
npm发布和修改详细教程
不同的子序列问题I
-
原文地址:https://www.cnblogs.com/ljy-endl/p/11377521.html
Copyright © 2020-2023
润新知