首先需要知道两个定理:
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)