对于两个数 a 和 b,a,b∈Z,则如果存在整数 c,d,使得 bc+d=a,且保证 0≤∣d∣<b,则称 c 是 a 除以 b 的商,d 是 a 除以 b 的余数,也被称为 a 模 b 的结果,记作 amodb=d.
对于两个整数 a 和 b,如果有整数 p,使得 amodp=bmodp,则称 a 和 b 对模 p 同余,记作 a≡b(modp),像这样的式子叫做同余方程.
对于两个整数 a 和 p,如果 a≡0(modp),则 p 整除 a,记作 p∣a .
同余的基本性质#
对于两个整数 a,b,如果有 a≡b(modp),则可得 p∣a−b
证明:
由已知可得:
{k1p+n=ak2p+n=b
其中,
n,k1,k2∈Z
所以:
a−b=k1p+n−k2p−n=k1p−k2p=p(k1−k2)⇒a−b≡0(modp)⇒p∣a−b
加法性质#
对于整数 a,b,c,d,p,如果有:
{a≡b(modp)c≡d(modp)
则有:
(a+c)≡(b+d)(modp)
证明:
由已知条件可得:
⎩⎨⎧k1p+n=ak2p+n=bk3p+m=ck4p+m=d
其中,
n,m,k1,k2,k3,k4∈Z
所以:
(a+c)(a+c)modp=k1p+n+k3p+m=(k1+k3)p+m+n=m+n
同理:
(b+d)modp=m+n
所以:(a+c)≡(b+d)(modp)
加法性质的引申性质#
对于整数 a,b,c,d,p,如果有:
{a≡b(modp)c≡d(modp)
则有:
a−c≡b−d(modp)
a×c≡b×d(modp)
ac≡bd(modp)
移项和约分#
同余方程允许移项.
对于整数 a,b,c,p,如果有:
a≡b+c(modp)
则有:
a−c≡b(modp)
证明:
aa−ca−c≡b+c(modp)≡b+c−c(modp)≡b(modp)
同余方程允许约分.
对于整数 a,b,p,如果有:
a≡b(modp)
且 c 是 a,b,p 的公因数,则有:
ca≡cb(modcp)
证明:
由已知条件可得:
{k1p+n=ak2p+n=b
其中,
n,k1,k2∈Z
所以:
camodcp=ck1p+nmodcp=(k1cp+cn)modcp=cn
同理可证,
cbmodcp=cn
所以:
ca≡cb(modcp)
若 ab≡1(modp),且 a,b,p∈Z ,则称 a 和 b 互为模 p 下的逆元,a 的逆元可以记作 a−1.
特别的,1 的逆元总是 1
除法性质#
对于整数 a,b,c,如果有:
ac≡bc(modp)
则有:
a≡b(modp)
证明:
acac⋅c−1a≡bc(modp)≡bc⋅c−1(modp)≡b(modp)
剩余类和完全剩余系#
对于正整数 p,全部整数可以分为 p 个集合,令其为 K0,K1,K2,⋯,Kp−1,其中,整数 n 和其所在的集合 Ki 所满足的条件为:
n≡i(modp)
则称 K0,K1,K2,⋯,Kp−1 为模 p 的剩余类.
对于一个集合 s,如果集合中有 p 个元素,且每一个元素和其他元素都不在同一个模 p 的剩余类中,则称这个集合 s 是模 p 的完全剩余系.模 p 的完全剩余系有无数个.
费马小定理#
如果 p 是一个质数,而整数 a 和 p 互质,则有:
ap−1≡1(modp)
证明:
假定模 p 的完全剩余系 s={0,1,2,⋯,p−1},不妨将 s 中的每一项都乘 a∈Z,a=0,得到一个新的集合 s′={0,a,2a,⋯,(p−1)a}.
引理:
s′ 是一个新的关于模
p 的完全剩余系.
假设 s′ 中存在两个元素 ai 和 aj,他们符合:ai≡aj(modp),i=j
所以,
ai≡aj(modp)⇒p∣(ai−aj)⇒p∣a(i−j)由于 p 与 a 互质,所以 p∣i−j,又因为 0≤i,j<p
所以不存在这样的 i,j 使得 p∣i−j,这与假设矛盾.
得证.
我们现在将模 p 为 0 的一项删去,即 s 和 s′ 中的 0.
我们可以知道,在删去 0 后,s 的各项之积 T 为:
T=1×2⋯×(p−1)=(p−1)!
s′ 的各项之积 T′ 为:
T′=a⋅2a⋯(p−1)a=ap−1(p−1)!
可推得:
TmodpT′modpki∈Z,=(p−1)!modp=(amodp)(2amodp)⋯[(p−1)amodp]modp=k1k2k3⋯kp−1modp0<ki<p
又由于 s′ 是模 p 的完全剩余系,所以每一个 ki 都是一个 [1,p−1] 之间的值(注意,ki 的值不一定是 i),且两两互不相同.
所以,
T′modp=k1k2k3⋯kp−1modp=1×2×⋯×(p−1)modp=(p−1)!modp=Tmodp
由此可得,T′≡T(modp)
所以:
T′ap−1(p−1)!≡T(modp)≡(p−1)!(modp)
令 (p−1)! 的逆元为 n,所以:
ap−1(p−1)!ap−1(p−1)!nap−1≡(p−1)!(modp)≡(p−1)!n(modp)≡1(modp)
得证.
利用费马小定理求逆元#
ap−1a⋅ap−2≡1(modp)≡1(modp)
所以,a 的逆元是 ap−2.在实战中,可以使用快速幂在 O(logn) 的时间复杂度之内解决.