【学习笔记】Miller-Rabin 算法

Page Views Count

费马小定理#

p 为质数时,若 gcd(a,p)=1,则 ap11(modp)

但逆命题是错的,例如 p=561 这类卡迈克尔数,满足任何 gcd(a,p)=1 都有 ap11(modp)。所以用费马小定理判断质数是不行的。

二次探测定理#

p 为奇质数时,x21(modp) 的解只有 x±1(modp)

证明考虑移项得到 (x+1)(x1)0(modp),即 p(x+1)(x1),由于 p 为质数,那么不会出现 x+1x1 共同贡献出 p 这个因子。

Miller-Rabin 算法#

将上面两个定理结合起来,取一质数为底数 a,特判 ap11(modp) 的情况,之后不断执行如下操作:

  • p1 为奇数,返回值为真。

  • p1 为偶数

    • ap12±1(modm),返回值为假。

    • ap121(modm),返回值为真。

    • ap121(modm)pp12+1,继续执行。

时间复杂度为 O(klog2p),其中 k 为选取的底数个数。

选取前 12 个素数,可以测出 [1,264) 内所有素数。

参考资料#

作者:SoyTony

出处:https://www.cnblogs.com/SoyTony/p/Learning_Notes_about_Miller-Rabin_Algorithm.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   SoyTony  阅读(96)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示