Miller-Rabin大素数测试 [FINISHED]
1 Miller-Rabin算法基于的两个定理:
(1)费尔马小定理:如果$p$是一个素数,且$0<a<p \rightarrow a^{p-1}\equiv 1(mod\ p)$.
(2)二次探测定理:如果$p$是一个素数,且$0<x<p$,则$x^{2}\equiv 1(mod\ p)\rightarrow x=1\ or\ x=p-1$
2、算法实现: 如果大整数$n$是素数,则$n-1$必是偶数,因此令$n-1=m*2^{q}$,其中$m$是正奇数,$q$是非负整数,考察下面的测试:
$a^{m*2^{0}}mod\ n$
$a^{m*2^{1}}mod\ n$
..
$a^{m*2^{q}}mod\ n$
若上面的式子中若$a^{m*2^{i}}mod\ n=1$,就去检查$a^{m*2^{i-1}}$是不是等于1或者$n-1$,若既不是1也不是$n-1$那么$n$不是素数。
然后可以多找几个不同的$a$来检查.