一般情况下判断一个数是不是质数时间复杂度是 O ( n ) O(\sqrt{n}) O(n),用 M i l l e r − R a b i n Miller-Rabin Miller−Rabin 素数测试法可以降低时间复杂度。
1. 1. 1. 费马小定理 : : : 当 p p p 为素数,且 g c d ( a , p ) = 1 gcd(a,p) = 1 gcd(a,p)=1,有 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1\pmod{p} ap−1≡1(modp),这是 p p p 为素数的必要不充分条件。
2. 2. 2. 二次探测定理 : : : 当 p p p 为素数,且 0 < x < p 0 < x < p 0<x<p,则方程 x ≡ 1 ( m o d p ) x\equiv1\pmod{p} x≡1(