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

首先需要知道两个定理:

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

2:二次探测定理:如果p是素数,x是小于p的正整数,且Miller_Rabin(米勒拉宾)素数测试算法,那么要么x=1,要么x=p-1。

  证明:这是显然的,因为Miller_Rabin(米勒拉宾)素数测试算法相当于p能整除Miller_Rabin(米勒拉宾)素数测试算法,也即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)

上一篇:素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法


下一篇:数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test