整数惟一分解定理
素数筛法
给定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.