序言
- 普通判断素数的方法:https://blog.csdn.net/fengqiyuka/article/details/99963246。
- 但你以为判断一个素数只能用 O ( n ) O(\sqrt n) O(n)的时间复杂度吗?错错错!
- 在这一篇文章,我就要提到一个十分神奇的定理,Wilson定理。
Wilson定理
p 为 质 数 ⇔ ( p − 1 ) ! ≡ − 1 ( m o d    p ) p为质数\Leftrightarrow(p-1)! \equiv -1(\mod p) p为质数⇔(p−1)!≡−1(modp)
证明
- 既然是要证明两个条件等价,肯定要分成两个部分证明:
1.若 ( p − 1 ) ! ≡ − 1 ( m o d    p ) (p-1)! \equiv -1(\mod p) (p−1)!≡−1(modp),则p为质数。(必要性)
2.若p为质数,则 ( p − 1 ) ! ≡ − 1 ( m o d    p ) (p-1)! \equiv -1(\mod p) (p−1)!≡−1(modp)。(充分性)
必要性证明
- 设 ( p − 1 ) ! = k p − 1 (p-1)!=kp-1 (p−1)!=kp−1,由于相邻的2个数 a a a与 a + 1 a+1 a+1一定互质,所以可得 ( p − 1 ) ! (p-1)! (p−1)!与 k p kp kp一定互质。
- 又可以显然地得出 ( p − 1 ) ! (p-1)! (p−1)!与 p p p一定互质。
- 因为 ( p − 1 ) ! = 1 ∗ 2 ∗ 3 ∗ . . . ∗ ( p − 1 ) (p-1)!=1*2*3*...*(p-1) (p−1)!=1∗2∗3