Miller_Rabin(米勒拉宾)素数测试算法

时间:2016-05-07 12:59:24   收藏:0   阅读:2927

首先需要知道两个定理:

1: 费马小定理: 假如p是素数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。

2:二次探测定理:如果p是素数,x是小于p的正整数,且技术分享,那么要么x=1,要么x=p-1。

  证明:这是显然的,因为技术分享相当于p能整除技术分享,也即p能整除(x+1)(x-1)。

  由于p是素数,那么只可能是x-1能被p整除(此时x=1) 或 x+1能被p整除(此时x=p-1)。

接着

如果a^(n-1) ≡ 1 (mod n)成立,Miller-Rabin算法不是立即找另一个a进行测试,而是看n-1是不是偶数。如果n-1是偶数,另u=(n-1)/2,并检查是否满足二次探测定理即a^u ≡ 1 或 a^u ≡ n - 1(mod n)。

一次测试的时间为(logn)

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!