Skip to content

Lec 8 整除性

一、数论

整数的研究,这是数学中最古老的领域之一!数学家 Hardy 在 1940 年《一个数学家的辩白》(A Mathematician’s Apology)中曾说,我们可以庆幸:

数论与日常人类活动的距离如此遥远,因此它应该是温和而纯粹的

也就是说,它不应该用于战争。

但事实却完全相反:

数论后来拥有了大量应用,包括:

  • 安全加密通信
  • 电子商务
  • 甚至在战争中也至关重要

不过这些就暂且不谈。

数论中有很多问题非常容易描述,但极其难以解决,例如:

  • 哥德巴赫猜想(Goldbach’s conjecture)
  • 双素数猜想(Twin Prime conjecture)

说到 Hardy,还有一个他和 Ramanujan 的趣事:

1729=13+123=93+103

这个数字不仅仅是一个数学趣闻:

  • 它出现在后来 30 年后的 K3 曲面研究中
  • 并与弦理论和量子物理有深刻联系

这说明:

数论几乎和一切都有联系。

二、整除性

Definition1 若存在整数 k 使得 ak = b, 则称 a 整除 b(a divides b) , 记作 a | b
等价说法:b 是 a 的倍数(multiple),a 是 b 的因子(divisor)。

例: 3125100nn,特别地情况, 00

基本性质:

性质说明
abbcac传递性
ababc整除可传递至倍数
abaca(b+c)整除对加法封闭
abaca(sb+tc),s,tZ整除对整数线性组合(ILC)封闭
Definition2 整数线性组合(integer linear combination, ILC

bc整数线性组合integer linear combination, ILC)是形如 sb+tcs,tZ)的整数。

2. 引例:水壶问题

问题: 给定容量为 ab 的两个水壶,通过倒满、倒空、互倒操作,能否量出恰好 m 升水?

状态机模型: 状态 (x,y) 表示两壶当前水量,转移包括:

  • 倒空:(0,y)(x,0)
  • 倒满:(a,y)(x,b)
  • 互倒(左→右):(0,x+y)(若 x+yb)或 (x+yb,b)(若 x+y>b
  • 互倒(右→左):类似

不变量: P(x,y)xy 均是 ab 的整数线性组合。

Proof(P 被保持):x=sa+tby=ua+vb。所有转移后的新状态均属于 {0,x,y,a,b,x+y,x+ya,x+yb},每个都是 a,b 的 ILC(如 x+y=(s+u)a+(t+v)b)。

结论: 所有可达状态 (x,y) 中,xy 均是 gcd(a,b) 的倍数。

  • a=3,b=5gcd=1,任意整数量可达(含 4)。
  • a=6,b=9gcd=3,5 不可达(5 不是 3 的倍数)。

3. 最大公因子 (Greatest Common Divisor)

Definition. 整数 a,b公因子common divisor)是同时整除二者的整数 d

Definition. ab最大公因子greatest common divisor),记作 gcd(a,b),是满足"每个公因子都整除 g"的非负公因子 g

特殊值: gcd(a,0)=|a|gcd(0,0)=0

3.1 关键引理

Lemma 1. gcd(a,0)=|a|

Lemma 2. gcd(a,b)=gcd(a,ba)

Proof. a,b 的公因子集合与 a,ba 的公因子集合相同(dadbdad(ba)),故最大公因子相同。

Theorem(带余除法 / Division Theorem). 对整数 n 和正整数 d,存在唯一整数对 (q,r) 使得 n=qd+r0r<d
q=ndivd 称为r=nremd 称为余数

Lemma 3. gcd(a,b)=gcd(a,brema)

Proof. b=aq+r,故 gcd(a,b)=gcd(a,ba)=gcd(a,b2a)==gcd(a,r)


4. 欧几里得算法 (Euclid's Algorithm)

Definition(欧几里得算法).(a,b)ab0)出发,反复执行 (x,y)(y,xremy),直到 y=0,此时 gcd(a,b)=x

不变量: gcd(x,y)=gcd(a,b)(由 Lemma 3 保持)。

终止性: xremy<y/2(当 yx 时),故每两步后 x+y 至少减半,步数上界为 O(log(a+b))(即位数之和)。

示例: gcd(1001,777)

gcd(1001, 777) = gcd(777, 224)   [q=1]
               = gcd(224, 105)   [q=3]
               = gcd(105, 14)    [q=2]
               = gcd(14,  7)     [q=7]
               = gcd(7,   0)     [q=2]
               = 7

5. 扩展欧几里得算法 (Extended Euclidean Algorithm / The Pulverizer)

目标: 不仅求 gcd(a,b),还找到整数 s,t 使得 gcd(a,b)=sa+tb

思路: 在欧几里得算法的每一步中,同步维护 x=sa+tby=ua+vb 的表示。

状态: (x,y,s,t,u,v),初始为 (a,b,1,0,0,1)

转移: (x,y,s,t,u,v)(y,r,u,v,squ,tqv),其中 q=xdivyr=xremy

不变量:

  1. gcd(x,y)=gcd(a,b)
  2. x=sa+tb
  3. y=ua+vb

示例: gcd(1001,777)=7,追踪 ILC 表示:

xy表示
10017771001=1a+0b
777224224=ab
224105105=3a+4b
1051414=7a9b
1477=52a+67b
70

gcd(1001,777)=7=52×1001+67×777


6. Bézout 恒等式与推论

Theorem (Bézout's Identity). gcd(a,b) 可以写成 ab 的整数线性组合:存在 s,tZ 使得 gcd(a,b)=sa+tb

Corollary 1. 整数 m 可以写成 a,b 的 ILC gcd(a,b)m

Proof. () 任何 ILC 是 gcd(a,b) 的倍数。() 设 m=kgcd(a,b),由 Bézout 得 gcd(a,b)=sa+tb,故 m=(ks)a+(kt)b

Corollary 2. gcd(a,b)a,b 所有正 ILC 中最小的。

Proof. 所有 ILC 恰好是 gcd(a,b) 的所有倍数,gcd(a,b) 是其中最小正整数。


7. 关键术语速查

英文中文
Divisibility / ab整除性
Divisor / Factor因子
Multiple倍数
Integer linear combination (ILC)整数线性组合
Greatest common divisor (GCD)最大公因子
Division Theorem带余除法定理
Quotient / Remainder商 / 余数
Euclid's Algorithm欧几里得算法
Extended Euclidean Algorithm / Pulverizer扩展欧几里得算法 / 辗转相除法
Bézout's IdentityBézout 恒等式