为什么整数算术需要新的语言
整数算术看似熟悉,但要证明关于整数的命题,不能只沿用实数除法的直觉。在实数代数中,a/b 通常是一个合法的实数;在整数论中,更重要的问题是:这个商能否仍然是一个整数?
这个问题会支撑后面的很多方法。它让我们定义质数、描述共同因子、有效计算最大公因数,并判断
ax+by=c
是否有整数解。
整除
定义
整除
设 a,b∈Z。若存在整数 d 使得
b=ad,则称 a 整除 b,记作 a∣b。此时 a 称为 b 的因数或除数。
定义中的“存在整数”是重点。例如 3∣15,因为 15=3⋅5;但 4∤15,因为不存在整数 d 使 15=4d。
几个边界情形要先说清楚:
- 任意整数都整除
0,因为 0=a⋅0;
0 只整除 0,因为 x=0⋅d 会迫使 x=0;
- ±1 整除所有整数;
- 若 a=0,则
a 和 −a 都整除 a。
定理
基本整除规则
设 a,b,c∈Z。
- 若 b=0 且 a∣b,则 ∣a∣≤∣b∣。
- 若 a∣b,则 (±a)∣(±b)。
- 若 a∣b 且 b∣c,则 a∣c。
- 若 a∣b 且 a∣c,则对任意 x,y∈Z,
a∣(bx+cy)。
第四条是后面经常使用的工具:若一个整数同时整除两个数,它也会整除这两个数的任意整数线性组合。例如 6∣18 且 6∣30,所以
6∣18x+30y
对所有整数 x,y 都成立。
质数、合数与良序原理
定义
质数与合数
设 n∈Z+ 且 n>1。
- 若
n 的正因数只有 1 和 n,则 n 是质数;
- 若
n 不是质数,则 n 是合数。
整数 1 既不是质数,也不是合数。
等价地,n>1 是合数,正是指存在整数 n1,n2 满足
n=n1n2,1<n1,n2<n.
关于质数的证明常常依赖以下次序事实。
定理
良序原理
N={0,1,2,…} 的任意非空子集都有最小元素。
良序原理让我们可以使用“最小反例”论证。若某类坏整数非空,选出其中最小的一个,再证明它会产生更小的坏整数,便得到矛盾。
证明思路如下。假设结论错误,令 m 是最小的、大于 1 但没有质因数的整数。m 不可能本身是质数,所以 m=n1n2,其中 1<n1,n2<m。由 m 的最小性,较小的 n1 有质因数 p。又因为 p∣n1 且 n1∣m,所以 p∣m,矛盾。
若质数只有有限多个 p1,…,pN,考虑
n=p1p2⋯pN+1.
上一个定理保证 n 有某个质因数。这个质因数必须是列表中的某个 pi。但 pi 也整除乘积 p1p2⋯pN,所以它整除差
n−p1p2⋯pN=1,
这不可能。
最大公因数
定义
最大公因数
设 a,b∈Z。若 a,b 不同时为零,定义
gcd(a,b)=max{d∈Z:d∣a and d∣b}.若 a=b=0,则定义 gcd(0,0)=0。
当输入不全为零时,最大值存在,因为共同因数的绝对值受到限制。除了 a=b=0 的特殊情况外,gcd(a,b) 都是正整数。
定义
互质
两个非零整数 a,b 若唯一的正共同因数是 1,则称它们互质。等价地,
gcd(a,b)=1.
最大公因数可用来移除两个整数的共同部分。若
d=gcd(a,b),
则
gcd(da,db)=1.
例如 gcd(126,140)=14,所以
140126=109,
而 9 与 10 互质。
除法算法
接下来的问题是计算性的:若不能事先列出所有共同因数,怎样求最大公因数?关键是带有受控余数的整数除法。
定理
除法算法
设 a,b∈Z 且 b=0。则存在唯一整数 q,r 使得
a=bq+r,0≤r<∣b∣.q 称为商,r 称为余数。
条件 0≤r<∣b∣ 不是附加装饰,而是唯一性的核心。例如
17=5⋅3+2
符合除法算法;但
17=5⋅2+7
不符合,因为余数 7 不小于 5。
常见错误
不能忽略余数范围
只写 a=bq+r 并不足够。若不限制 r,同一个 a 可以有无限多种表示。条件 0≤r<∣b∣ 才会选出标准的商与余数。
最大公因数不变性与欧几里得算法
除法算法有用,是因为把 (a,b) 换成 (b,r) 不会改变最大公因数。
定理
最大公因数的一步不变性
若 a=bq+r,则
gcd(a,b)=gcd(b,r).
理由是:a,b 的共同因数会整除 r=a−bq;反过来,b,r 的共同因数会整除 a=bq+r。因此两对数的正共同因数完全相同。
例题
用欧几里得算法求 gcd(7224,1290)
反复使用除法算法:
72241290774516=1290⋅5+774,=774⋅1+516,=516⋅1+258,=258⋅2+0.最后一个非零余数是 258,所以
gcd(7224,1290)=258.
算法必然停止,因为余数形成严格递减的非负整数列:
r1>r2>r3>⋯≥0.
非负整数不可能无限地严格递减。
扩展欧几里得算法与 Bézout 恒等式
同一个计算可以倒推,将最大公因数写成原本两个数的整数线性组合。
例题
倒代回去
由前面的计算,
258=774−516.代入 516=1290−774:
258=774−(1290−774)=2⋅774−1290.再代入 774=7224−5⋅1290:
258=2(7224−5⋅1290)−1290=2⋅7224−11⋅1290.因此
258=7224⋅2+1290⋅(−11).
定理
Bézout 恒等式
对任意整数 a,b,存在整数 x,y 使得
gcd(a,b)=ax+by.
这个结果说明,最大公因数不只是最大的共同因数;它也可以由 a,b 的整数线性组合产生。
定理
互质判别
设 a,b 为非零整数。则 a,b 互质,当且仅当存在整数 x,y 使得
ax+by=1.
若 gcd(a,b)=1,这就是 Bézout 恒等式。反过来,若 ax+by=1,任何共同因数都必须整除 1,所以最大正共同因数只能是 1。
例题
扩展欧几里得表格的结果
对 12345 与 11111,欧几里得算法给出
1234511111123454=11111⋅1+1234,=1234⋅9+5,=5⋅246+4,=4⋅1+1,=1⋅4+0.所以最大公因数是 1。倒代或使用系数表格可得
1=12345(−2224)+11111(2471).这特别证明 12345 与 11111 互质。
共同因数与 Euclid 引理
Bézout 恒等式也给出最大公因数的另一个重要刻画。
定理
共同因数整除最大公因数
对整数 a,b,n,
n∣a and n∣b⟺n∣gcd(a,b).
正向尤其有用。若 n 同时整除 a 和 b,则 n 整除任意线性组合 ax+by;特别地,它整除等于 gcd(a,b) 的 Bézout 线性组合。
定理
Euclid 引理
设 p 是质数。若 p∣ab,则 p∣a 或 p∣b。
若 p∤a,则 gcd(a,p)=1,所以存在整数 m,n 使
am+pn=1.
两边乘以 b 得
abm+pbn=b.
因为 p∣ab,左边两项都被 p 整除,所以 p∣b。
唯一质因数分解
定理
算术基本定理
每个大于 1 的正整数都可以写成质数乘积,而且这个乘积在不计因子次序下唯一。
存在性仍然来自最小反例法。若存在最小的、大于 1 且不能写成质数乘积的整数,它不可能是质数,因此可分解成两个更小的因数;但这两个较小因数已经可以分解成质数乘积,矛盾。
唯一性使用 Euclid 引理。若
p1p2⋯pr=q1q2⋯qs,
则 p1 整除右边乘积,所以 p1 必整除某个质因数 qj,从而 p1=qj。消去后重复同样论证。
这个定理也给出计算最大公因数的指数方法。若
a=p1m1⋯prmr,b=p1n1⋯prnr,
其中缺少的质数用指数 0 补上,则
gcd(a,b)=p1min(m1,n1)⋯prmin(mr,nr).
例题
用质因数幂次求最大公因数
因为
144=24⋅32,60=22⋅3⋅5,所以
gcd(144,60)=22⋅31⋅50=12.
一次 Diophantine 方程
未知数 x,y 必须是整数的方程
ax+by=c
称为一次 Diophantine 方程。Bézout 恒等式可以完全判定它何时有解。
定理
可解条件
设 a,b,c∈Z,且 d=gcd(a,b)。方程
ax+by=c有整数解 (x,y),当且仅当 d∣c。
若解存在,因为 d 整除 a,b,所以 d 整除 ax+by=c。反过来,若 c=dr,由 Bézout 恒等式有 d=am+bn,因此
c=dr=a(mr)+b(nr).
所以 (mr,nr) 是一组解。
若已知一组解,也可以描述所有解。设 d=gcd(a,b)=0,并令
u=da,v=db.
若 (x0,y0) 是一组解,则所有解为
x=x0+kv,y=y0−ku,k∈Z.
例题
量水问题
若有 180 mL 的杯和 105 mL 的玻璃杯,能否量出刚好 30 mL?代数上,我们要判断
180x+105y=30是否有整数解。因为
gcd(180,105)=15且 15∣30,所以有解。
由扩展欧几里得算法,
15=180⋅3−105⋅5.乘以 2 得
30=180⋅6−105⋅10.所以一组解是 (x,y)=(6,−10)。因为 a/d=12 且 b/d=7,所有解为
(x,y)=(6+7k,−10−12k),k∈Z.
快速检查
快速检查
以整数语言来说,a∣b 是什么意思?
快速检查
为什么 a 和 b 的每个共同因数都会整除 ax+by,其中 x,y∈Z?
快速检查
在 7224 与 1290 的欧几里得算法中,为什么最大公因数是最后一个非零余数?
每一步都用 gcd(a,b)=gcd(b,r)。
快速检查
判断 ax+by=c 是否有整数解的条件是什么?
用 gcd(a,b) 表述。
练习
- 列出
84 的所有正因数,并求 gcd(84,60)。
- 用除法算法把 −37 写成 −37=5q+r,其中 0≤r<5。
- 用欧几里得算法求 gcd(252,198)。
- 将 gcd(252,198) 写成 252x+198y。
- 证明:若 n∣a 且 n∣b,则 n∣gcd(a,b)。
- 判断 35x+21y=14 是否有整数解;若有,求一组解。
- 判断 35x+21y=10 是否有整数解。
- 用质因数分解求 gcd(24⋅32⋅5,23⋅35⋅7)。