【算法简介】
- MillerRabin M i l l e r R a b i n 素数测试是一种判断一个数是否是质数的方式。
- 其单次测试的时间复杂度不会超过 O(Log2N) O ( L o g 2 N ) ,期望为 O(LogN) O ( L o g N ) ,几乎不需要额外的空间。
- MillerRabin M i l l e r R a b i n 素数测试不是一个确定算法,其单次测试有不超过 14 1 4 的概率会将一个合数误判为一个素数。但当被测试数在某一个范围内时,我们可以通过选取适当的测试底数让 MillerRabin M i l l e r R a b i n 素数测试对于这个范围内的每一个数都能够正确地得出结果。
【算法流程】
一个质数具有许多合数不具有的性质,例如:
定理 1 1 :若 是质数,则对于任意 0<a<p 0 < a < p ,有 ap−1≡1 (mod p) a p − 1 ≡ 1 ( m o d p ) 。
引理 2 2 :若 是质数,且 x2≡1 (mod p) x 2 ≡ 1 ( m o d p ) ,那么 x≡1 (mod p) x ≡ 1 ( m o d p ) 和 x≡p−1 (mod