素数(超详细!!!)

整数惟一分解定理

素数筛法

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

 

 

转载于:https://www.cnblogs.com/ljy-endl/p/11377521.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值