Archipelago

Lec 9模运算

讲义完成更新于 2026-09-16

Lec 9 模运算

资料依据:课程视频与 transcript · Lecture notes

TL;DR

  • a≡b(modn)a\equiv b\pmod n 表示 n∣(a−b)n\mid(a-b);同余与加法、减法和乘法相容,因而可在余数类上做代数运算。
  • 模 nn 下的除法必须通过乘法逆元实现;aa 存在逆元当且仅当 gcd⁡(a,n)=1\gcd(a,n)=1。
  • Fermat 小定理说明当 pp 为素数且 pmidap mid a 时,ap−1equiv1pmodpa^{p-1}equiv1pmod p,它支撑快速模幂、素性测试与公钥密码的基础论证。

1. 模运算的直觉

模运算的核心思想:忽略 nn 的倍数,只关注余数。

场景模数 nn
奇偶性2
星期几7
数字末位10
时钟(12小时)12

Example. 现在是周二,100 天后是星期几?100rem⁡7=2100 \operatorname{rem} 7 = 2,周二加 2 天 = 周四。


2. 同余关系 (Congruence)

Definition. 称 aa 同余于 bb 模 nn(a is congruent to b mod n),记作 a≡nba \equiv_n b,当且仅当 n∣(a−b)n \mid (a - b)。

等价刻画:

Theorem. a≡nb  ⟺  (arem⁡n)=(brem⁡n)a \equiv_n b \iff (a \operatorname{rem} n) = (b \operatorname{rem} n)。

Proof. 若余数相同均为 rr,则 a=nq+ra = nq + r,b=nq′+rb = nq' + r,故 a−b=n(q−q′)a - b = n(q - q'),即 n∣(a−b)n \mid (a-b)。反之若 n∣(a−b)n \mid (a-b),设 b=qn+rb = qn + r,则 a=(k+q)n+ra = (k+q)n + r,由带余除法唯一性知 arem⁡n=ra \operatorname{rem} n = r。■\blacksquare

剩余类(residue classes / equivalence classes): 模 nn 下恰好有 nn 个类 [0],[1],…,[n−1][0], [1], \ldots, [n-1],每个整数属于其余数所在的类。

示例(模 5):

[0] = { ..., -10, -5,  0,  5, 10, ... }
[1] = { ...,  -9, -4,  1,  6, 11, ... }
[2] = { ...,  -8, -3,  2,  7, 12, ... }
[3] = { ...,  -7, -2,  3,  8, 13, ... }
[4] = { ...,  -6, -1,  4,  9, 14, ... }

3. 符号说明

写法含义类型
a rem n / a mod naa 除以 nn 的非负余数,值域 [0,n)[0, n)函数,单一确定值
a≡nba \equiv_n b / a≡b(modn)a \equiv b \pmod{n}aa 与 bb 模 nn 同余关系,双方无需在 [0,n)[0,n) 内

注意: 不同编程语言对负数取模行为不同。本课始终使用非负余数定义(Python / Mathematica 约定)。例:(−43)rem⁡10=7(-43) \operatorname{rem} 10 = 7,而非 −3-3。


4. 模运算的代数性质

Theorem. 若 a≡nba \equiv_n b,则对任意 cc:

  1. a+c≡nb+ca + c \equiv_n b + c
  2. ac≡nbcac \equiv_n bc
  3. a−c≡nb−ca - c \equiv_n b - c
  4. c−a≡nc−bc - a \equiv_n c - b

Proof. 每条均由 n∣(a−b)n \mid (a - b) 直接验证。例如第 2 条:ac−bc=(a−b)cac - bc = (a-b)c,是 a−ba-b 的倍数,故 n∣(ac−bc)n \mid (ac - bc)。■\blacksquare

Theorem. 若 x≡nyx \equiv_n y,则对任意 k≥1k \geq 1,xk≡nykx^k \equiv_n y^k。

Proof(归纳): Base case k=1k=1 即假设。归纳步骤: xk=x⋅xk−1≡ny⋅xk−1≡ny⋅yk−1=yk■x^k = x \cdot x^{k-1} \equiv_n y \cdot x^{k-1} \equiv_n y \cdot y^{k-1} = y^k \qquad \blacksquare

警告: 指数本身不能随意对 nn 取模。例:1≡561 \equiv_5 6,但 21=2̸≡564=262^1 = 2 \not\equiv_5 64 = 2^6。

Example. 求 x=1133511111(6+77995000)x = 1133^{511111}(6 + 77995000) 的最后两位(即 xrem⁡100x \operatorname{rem} 100)。

  • 底数:1133≡100331133 \equiv_{100} 33,进一步 351≡1003535^1 \equiv_{100} 35,352≡1002535^2 \equiv_{100} 25,353≡1007535^3 \equiv_{100} 75,354≡1002535^4 \equiv_{100} 25,…(在 25 和 75 间交替),3511111≡1007535^{11111} \equiv_{100} 75。
  • 指数中:99≡100−199 \equiv_{100} -1,故 995000≡100(−1)5000=199^{5000} \equiv_{100} (-1)^{5000} = 1,即括号内 ≡1006+1=7\equiv_{100} 6 + 1 = 7。
  • 故 x≡10075×7=525≡10025x \equiv_{100} 75 \times 7 = 525 \equiv_{100} 25。

5. 模意义下的除法与逆元

5.1 乘法逆元 (Multiplicative Inverse)

Definition. aa 模 nn 的乘法逆元是满足 ab≡n1ab \equiv_n 1 的整数 bb,记作 a−1a^{-1}。

Theorem. aa 有模 nn 的逆元   ⟺  \iff gcd⁡(a,n)=1\gcd(a, n) = 1(即 aa 与 nn 互质)。

Proof. ∃b:  ab≡n1  ⟺  ∃b,q:  ab−nq=1  ⟺  1\exists b:\; ab \equiv_n 1 \iff \exists b, q:\; ab - nq = 1 \iff 1 是 a,na, n 的 ILC   ⟺  gcd⁡(a,n)=1\iff \gcd(a,n) = 1。■\blacksquare

Corollary. 若 pp 是质数且 a̸≡p0a \not\equiv_p 0,则 aa 有模 pp 的逆元。

求逆元的方法: 用 Pulverizer(扩展欧几里得算法)。

Example. 77 和 1313 是模 3030 的互逆(7×13=91≡3017 \times 13 = 91 \equiv_{30} 1)。
解方程 7x≡30147x \equiv_{30} 14:两边乘以 1313,得 91x≡3018291x \equiv_{30} 182,即 x≡302x \equiv_{30} 2。

5.2 注意:不能随便"约分"

若 gcd⁡(a,n)>1\gcd(a, n) > 1,则 aa 无逆元,从 ac≡nbcac \equiv_n bc 不能推出 a≡nba \equiv_n b。
例:3×5≡63×13 \times 5 \equiv_6 3 \times 1,但 5̸≡615 \not\equiv_6 1。


6. Fermat 小定理 (Fermat's Little Theorem)

Theorem (FLT). 若 pp 为质数且 a̸≡p0a \not\equiv_p 0,则 ap−1≡p1a^{p-1} \equiv_p 1。

Proof. 考虑集合 {a,2a,3a,…,(p−1)a}\{a, 2a, 3a, \ldots, (p-1)a\} 模 pp 的余数:

  • 无一为 00(因 p∤ap \nmid a,pp 是质数);
  • 无两个相同(若 ia≡pjaia \equiv_p ja,则因 aa 有逆元,i≡pji \equiv_p j,但 1≤i,j≤p−11 \leq i, j \leq p-1 无重复)。

故此集合模 pp 恰好是 {1,2,…,p−1}\{1, 2, \ldots, p-1\} 的某个排列,两边取乘积:

(p−1)!⋅ap−1≡p(p−1)!(p-1)! \cdot a^{p-1} \equiv_p (p-1)!

因 gcd⁡((p−1)!,p)=1\gcd((p-1)!, p) = 1,可约去 (p−1)!(p-1)!,得 ap−1≡p1a^{p-1} \equiv_p 1。■\blacksquare

推论: 模质数 pp 时,指数可以对 p−1p-1 取模(而非对 pp):

当 p∤ap \nmid a 时,由 Fermat 小定理可将正指数按 p−1p-1 化简:

ak≡pakrem⁡(p−1)a^k \equiv_p a^{k \operatorname{rem} (p-1)}


7. 应用

7.1 整除 9 的判断法

Theorem. nn 被 9 整除   ⟺  \iff nn 的各位数字之和被 9 整除。

Proof. 设 n=∑idi⋅10in = \sum_{i} d_i \cdot 10^i。因 10≡9110 \equiv_9 1,故 10i≡9110^i \equiv_9 1,所以 n≡9∑idin \equiv_9 \sum_i d_i。■\blacksquare

7.2 ISBN 校验码

ISBN-10:(a1,…,a10)(a_1, \ldots, a_{10}),校验条件为

∑i=110i⋅ai≡110\sum_{i=1}^{10} i \cdot a_i \equiv_{11} 0

  • 模数 11 是质数,gcd⁡(10,11)=1\gcd(10, 11) = 1,故 a10a_{10} 总有唯一解(由前 9 位确定)。
  • 可证:单个数字出错或相邻两位互换,校验均失败。

7.3 奇偶校验 (Parity)

简单 RAID 思路:存 b1,b2b_1, b_2,第三块存 b3=b1⊕b2b_3 = b_1 \oplus b_2(加法模 2)。任意一块损坏可从另两块恢复。


8. 关键术语速查

英文中文
Congruence a≡nba \equiv_n b同余
Residue / Remainder余数
Residue class / Equivalence class剩余类 / 等价类
Modular arithmetic模运算 / 模算术
Multiplicative inverse乘法逆元
Coprime互质
Fermat's Little Theorem (FLT)Fermat 小定理
Parity奇偶性
ISBN checksumISBN 校验码

我的理解

我的理解

模运算中“约分”失败的根本原因是乘数未必有逆元。先检查与模数互素,再乘以逆元,比套用普通数学直觉更安全。