写在前面:
记录了个人的学习过程,同时方便复习
整理自网络
非原创部分会标明出处
by blackgryph0n
结论
Miller-Rabin算法可以在O(k log2(n))的时间内检测一个超级大的正整数n是否是素数,k为自己设定的检测的次数
裸的Miller-Rabin算法在验证一个数是否为素数时出错的可能性随着测试次数的增加而降低(不可能降为0)
证明
费马检测
据费马小定理,有ap ≡ a (mod p),p为素数
而费马小定理的逆命题是若任意正整数n满足an ≡ a (mod n),则n为素数
(注意,是假命题,p是素数为xp ≡ x (mod p)的充分不必要条件)
通常地,为了方便计算,使a==2
很长一段时间里,人们都认为费马小定理的逆命题是正确的,并且有人亲自验证了a=2, p<300的所有情况
1819年有人发现了费马小定理逆命题的第一个反例:虽然2的340次方除以341余1,但341=11*31
后来,人们又发现了561, 645, 1105等数都表明a=2时Fermat小定理的逆命题不成立。虽然这样的数不多,但不能忽视它们的存在
于是,人们把所有能整除2^(n-1)-1的合 数n叫做伪