## 标题线性筛法:
保存已知的素数,用i+1得到的新数b从素数2开始乘以这些素数,
得到的乘积是非素数,如果新数b是某个素数a的倍数就停止乘下去。
证明最后一句话(反证法):
此时 b = k * a,则大于a的素数 * b == a* (k*大于a的素数)*
*设c=k**大于a的素数=kq>ka=b
处理b时需要标记但没有标记的是 bq=kaq=ca
假设c=wp=kq, p、q是素数,且 p<a<q,则只会标记到 cp,不会标记到 ca
此时有b=ka=wp/q*a=wa/q * p,
遗憾地是wa/q不一定是整数,
所以p不一定是b的因子,得不出矛盾(a仍可能是最小的因子)
由于c=wp,p是比a更小的因数,所以处理c时遍历到p就会停止
但ca=wpa=pwa,wa>wp=c,所以c的后续处理wa时会标记wap,也就是wpa=ca
所以ca一定会标记。
证明线性筛法求质数
最新推荐文章于 2024-07-23 22:06:37 发布