Skip to content

Lecture 09: Modular Arithmetic

MIT 6.1200J Mathematics for Computer Science, Spring 2024


1. 模运算的直觉

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

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

Example. 现在是周二,100 天后是星期几?100rem7=2,周二加 2 天 = 周四。


2. 同余关系 (Congruence)

Definition.a 同余于 bna is congruent to b mod n),记作 anb,当且仅当 n(ab)

等价刻画:

Theorem. anb(aremn)=(bremn)

Proof. 若余数相同均为 r,则 a=nq+rb=nq+r,故 ab=n(qq),即 n(ab)。反之若 n(ab),设 b=qn+r,则 a=(k+q)n+r,由带余除法唯一性知 aremn=r

剩余类(residue classes / equivalence classes):n 下恰好有 n 个类 [0],[1],,[n1],每个整数属于其余数所在的类。

示例(模 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 na 除以 n 的非负余数,值域 [0,n)函数,单一确定值
anb / ab(modn)abn 同余关系,双方无需在 [0,n)

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


4. 模运算的代数性质

Theorem.anb,则对任意 c

  1. a+cnb+c
  2. acnbc
  3. acnbc
  4. cancb

Proof. 每条均由 n(ab) 直接验证。例如第 2 条:acbc=(ab)c,是 ab 的倍数,故 n(acbc)

Theorem.xny,则对任意 k1xknyk

Proof(归纳): Base case k=1 即假设。归纳步骤:

xk=xxk1nyxk1nyyk1=yk

警告: 指数本身不能随意对 n 取模。例:156,但 21=2564=26

Example.x=1133511111(6+77995000) 的最后两位(即 xrem100)。

  • 底数:113310033,进一步 35110035352100253531007535410025,…(在 25 和 75 间交替),351111110075
  • 指数中:991001,故 995000100(1)5000=1,即括号内 1006+1=7
  • x10075×7=52510025

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

5.1 乘法逆元 (Multiplicative Inverse)

Definition. an乘法逆元是满足 abn1 的整数 b,记作 a1

Theorem. a 有模 n 的逆元 gcd(a,n)=1(即 an 互质)。

Proof. b:abn1b,q:abnq=11a,n 的 ILC gcd(a,n)=1

Corollary.p 是质数且 ap0,则 a 有模 p 的逆元。

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

Example. 713 是模 30 的互逆(7×13=91301)。
解方程 7x3014:两边乘以 13,得 91x30182,即 x302

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

gcd(a,n)>1,则 a 无逆元,从 acnbc 不能推出 anb
例:3×563×1,但 561


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

Theorem (FLT).p 为质数且 ap0,则 ap1p1

Proof. 考虑集合 {a,2a,3a,,(p1)a}p 的余数:

  • 无一为 0(因 pap 是质数);
  • 无两个相同(若 iapja,则因 a 有逆元,ipj,但 1i,jp1 无重复)。

故此集合模 p 恰好是 {1,2,,p1} 的某个排列,两边取乘积:

(p1)!ap1p(p1)!

gcd((p1)!,p)=1,可约去 (p1)!,得 ap1p1

推论: 模质数 p 时,指数可以对 p1 取模(而非对 p):

akpakrem(p1)

7. 应用

7.1 整除 9 的判断法

Theorem. n 被 9 整除 n 的各位数字之和被 9 整除。

Proof.n=idi10i。因 1091,故 10i91,所以 n9idi

7.2 ISBN 校验码

ISBN-10:(a1,,a10),校验条件为

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

7.3 奇偶校验 (Parity)

简单 RAID 思路:存 b1,b2,第三块存 b3=b1b2(加法模 2)。任意一块损坏可从另两块恢复。


8. 关键术语速查

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