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$来检查.

 

 

posted @ 2013-11-28 00:11  朝拜明天19891101  阅读(588)  评论(0编辑  收藏  举报