同余 是数论的「分类工具」——把所有整数按 除以 m 的余数 归类。它把整数的乘法结构搬到了有限集 {0,1,…,m−1} 上,成为现代密码学(RSA、椭圆曲线)的核心。
整数 a,b,正整数 m,若 m∣(a−b),称 a 同余于 b 模 m,记为:
a≡b(modm)
等价表述:a 与 b 除以 m 余数相同。
模 m 同余满足 自反、对称、传递,是 Z 上的 等价关系。
设 a≡b,c≡d(modm):
a±c≡b±d,ac≡bd(modm)
ak≡bk(modm)(k∈N)
ac≡bc(modm)⇏a≡b(modm)。
正确除法:
ac≡bc(modm)⇒a≡b(modgcd(c,m)m)
特别地,若 gcd(c,m)=1,则可正常约去。
模 m 的所有同余类构成 剩余类环 Zm={[0],[1],…,[m−1]}。
m 个整数,模 m 两两不同余。最常用的是 {0,1,…,m−1}。
完全剩余系中与 m 互素的部分。其大小为 欧拉函数 φ(m)。
φ(m) 表示 {1,2,…,m} 中与 m 互素的整数个数。
φ(m)=mp∣m∏(1−p1)
其中 p 取遍 m 的素因子。
- φ(p)=p−1(p 为素数)。
- φ(pk)=pk−pk−1。
- 积性:gcd(a,b)=1⇒φ(ab)=φ(a)φ(b)。
详见 积性函数。
设 p 是素数,gcd(a,p)=1:
ap−1≡1(modp)
更一般地,ap≡a(modp) 对任意 a 成立。
费马小定理的推广。设 gcd(a,m)=1:
aφ(m)≡1(modm)
欧拉定理的实用价值:求 aNmodm 时,可以把指数对 φ(m) 取模,大大降阶。这是 RSA 加密的数学基础。
p 是素数 ⟺
(p−1)!≡−1(modp)
形式:
ax≡b(modm)
解的存在性:有解 ⟺gcd(a,m)∣b。
解的个数:若有解,模 m 意义下恰有 gcd(a,m) 个解。
求解:用 扩展欧几里得 求 a−1modm(要求 gcd(a,m)=1),然后 x≡a−1b(modm)。
设 m1,m2,…,mk 两两互素,方程组:
⎩⎨⎧x≡a1(modm1)x≡a2(modm2)⋮x≡ak(modmk)
在模 M=m1m2⋯mk 意义下有 唯一解。
令 Mi=M/mi,Mi−1 是 Mi 模 mi 的逆元,则:
x≡i=1∑kaiMiMi−1(modM)
求 x 使 x≡2(mod3),x≡3(mod5),x≡2(mod7)。
M=105,M1=35,M2=21,M3=15。
求逆元:35≡2(mod3),2−1≡2(mod3);21≡1(mod5),逆元为 1;15≡1(mod7),逆元为 1。
x≡2⋅35⋅2+3⋅21⋅1+2⋅15⋅1≡140+63+30≡233≡23(mod105)。
求 anmodm 时,用 二进制分解 n:
an=a2k1⋅a2k2⋯
边乘边取模,复杂度 O(logn)。这是 RSA、ECDSA 等密码算法的基础操作。