Miller-Rabin素性检验
Miller-Rabin素性检验是一种能够判断素性的高效算法。
费马小定理
当 p p p是一个素数,且 1 ≤ a ≤ p − 1 1\le a \le p-1 1≤a≤p−1时,有:
a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod p ap−1≡1(modp)
这就是费马小定理。
通过费马小定理进行素性检验
如果逆着推过来,当 1 ≤ a ≤ p − 1 1\le a \le p-1 1≤a≤p−1时,如果上述式子成立,则 p p p不就是一个素数了嘛?
然而,这个是错误的。仍然存在一些(无穷)合数,使得这个逆定理成立,例如341。
Miller-Rabin素性检验
显然,上面的素性检验存在着一些问题。针对这个问题,一种思路是测更多次来提高素性检验的成功率。
二次探测定理
如果 p p p是一个素数,当以下式子成立时:
x 2 ≡ 1 ( m o d p ) x^2 \equiv 1 \pmod p x2≡1(modp)
则该二次同余方程的解只有两个:
x 1 = 1 , x 2 = p − 1 x_1=1, \ x_2=p-1 x1=1, x2=p−1
(有的地方可能会说 x 2 = − 1 x_2=-1 x2=−1,这和上式是一致的)
二次探测定理的证明
让我们考虑上面那个二次同余方程。因为方程是同余结果为1的,所以可以得到下面方程: