关于质数判定条件$(p-1)!=(p-1) \pmod p$的普适性及原理问询
嘿,你这个发现太有意思了!你观察到的这个规律其实是**威尔逊定理(Wilson's Theorem)**的一个等价表述,而且它确实对所有质数都成立,完全不用担心范围限制~
为什么这个式子对所有质数都成立?
首先先给你拆解一下:我们先看威尔逊定理的原始形式——对于大于1的整数$p$,$p$是质数当且仅当:
$$(p-1)! \equiv -1 \pmod{p}$$
而你写的式子$(p-1)! \equiv (p-1) \pmod{p}$和它是一回事!因为在模$p$的运算里,$p-1$和$-1$是等价的:毕竟$p-1 + 1 = p$,而$p$除以$p$的余数是0,所以$p-1 \equiv -1 \pmod{p}$。把原始定理里的$-1$换成$p-1$,就得到了你通过试错发现的这个式子。
原理到底是什么?(简单版解释)
对于质数$p$,从1到$p-1$的每个数都和$p$互质(毕竟质数的因数只有1和自己)。这里有个关键性质:每个数$a$(1≤a≤p-1)都能找到唯一的另一个数$x$,使得$a \times x \equiv 1 \pmod{p}$(这个$x$就是$a$的模逆元)。
- 除了1和$p-1$之外,其他所有数的逆元都不是自己。比如如果$a^2 \equiv 1 \pmod{p}$,那$(a-1)(a+1) \equiv 0 \pmod{p}$,只有$a=1$或者$a=p-1$时才成立。
- 所以我们可以把2到$p-2$这些数两两配对,每对的乘积都是1 mod p。把这些配对相乘,结果就是1。
- 最后剩下的就是1和$p-1$,把它们乘进去:$1 \times (p-1) = p-1$,而整个$(p-1)!$就是这些配对乘积乘以1和$p-1$,所以$(p-1)! \equiv p-1 \pmod{p}$,完美符合你发现的规律。
补充个小细节:反过来成立吗?
如果一个大于1的整数$n$满足$(n-1)! \equiv n-1 \pmod{n}$,那$n$一定是质数吗?答案是肯定的(除了n=4这个特例,但4代入的话$(4-1)! =6$,6 mod4=2,而4-1=3,2≠3,所以其实只有质数满足这个式子)。因为如果n是大于4的合数,$(n-1)!$里会包含n的所有因数,所以$(n-1)! \equiv 0 \pmod{n}$,而$n-1 \equiv -1 \pmod{n}$,0和-1显然不相等,所以只有质数才符合条件。
题外话:实际编程里用这个判断质数靠谱吗?
虽然这个定理是完全正确的,但实际写代码时很少用它——因为阶乘的增长速度太快了,哪怕是中等大小的数,阶乘的数值都会大到溢出,而且计算效率也远不如埃氏筛、米勒-拉宾测试这些专门的质数判定算法。不过作为理论上的质数判定依据,它绝对是硬核的~
备注:内容来源于stack exchange,提问作者Aniket Harit




