欢迎来到endl的博客hhh☀☾☽♡♥

浏览器标题切换
把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

素数(超详细!!!)

整数惟一分解定理

素数筛法

给定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.

 

 

posted @ 2019-08-19 15:40  endl\n  阅读(2667)  评论(0编辑  收藏  举报