Evanalysis
7.1预计阅读时间: 16 分钟

7.1 整除、最大公因数与整数方程

建立整除、质数、除法算法、欧几里得算法、Bézout 恒等式、唯一质因数分解,以及一次 Diophantine 方程。

为什么整数算术需要新的语言

整数算术看似熟悉,但要证明关于整数的命题,不能只沿用实数除法的直觉。在实数代数中,a/ba/b 通常是一个合法的实数;在整数论中,更重要的问题是:这个商能否仍然是一个整数?

这个问题会支撑后面的很多方法。它让我们定义质数、描述共同因子、有效计算最大公因数,并判断

ax+by=cax+by=c

是否有整数解。

整除

定义

整除

设 a,b∈Za,b\in\mathbb Z。若存在整数 d 使得

b=ad,b=ad,

则称 a 整除 b,记作 a∣ba\mid b。此时 a 称为 b 的因数或除数。

定义中的“存在整数”是重点。例如 3∣153\mid 15,因为 15=3⋅515=3\cdot5;但 4∤154\nmid 15,因为不存在整数 d 使 15=4d15=4d。

几个边界情形要先说清楚:

  • 任意整数都整除 0,因为 0=a⋅00=a\cdot0;
  • 0 只整除 0,因为 x=0⋅dx=0\cdot d 会迫使 x=0x=0;
  • ±1\pm1 整除所有整数;
  • 若 a≠0a\ne0,则 a 和 −a-a 都整除 a。

定理

基本整除规则

设 a,b,c∈Za,b,c\in\mathbb Z。

  1. 若 b≠0b\ne0 且 a∣ba\mid b,则 ∣a∣≤∣b∣|a|\le |b|。
  2. 若 a∣ba\mid b,则 (±a)∣(±b)(\pm a)\mid(\pm b)。
  3. 若 a∣ba\mid b 且 b∣cb\mid c,则 a∣ca\mid c。
  4. 若 a∣ba\mid b 且 a∣ca\mid c,则对任意 x,y∈Zx,y\in\mathbb Z, a∣(bx+cy)a\mid (bx+cy)。

第四条是后面经常使用的工具:若一个整数同时整除两个数,它也会整除这两个数的任意整数线性组合。例如 6∣186\mid 18 且 6∣306\mid 30,所以

6∣18x+30y6\mid 18x+30y

对所有整数 x,y 都成立。

质数、合数与良序原理

定义

质数与合数

设 n∈Z+n\in\mathbb Z^+ 且 n>1n>1。

  • 若 n 的正因数只有 1 和 n,则 n 是质数;
  • 若 n 不是质数,则 n 是合数。

整数 1 既不是质数,也不是合数。

等价地,n>1n>1 是合数,正是指存在整数 n1,n2n_1,n_2 满足

n=n1n2,1<n1,n2<n.n=n_1n_2,\qquad 1<n_1,n_2<n.

关于质数的证明常常依赖以下次序事实。

定理

良序原理

N={0,1,2,…}\mathbb N=\{0,1,2,\ldots\} 的任意非空子集都有最小元素。

良序原理让我们可以使用“最小反例”论证。若某类坏整数非空,选出其中最小的一个,再证明它会产生更小的坏整数,便得到矛盾。

定理

大于 1 的整数都有质因数

每个大于 1 的正整数都至少有一个质因数。

证明思路如下。假设结论错误,令 m 是最小的、大于 1 但没有质因数的整数。m 不可能本身是质数,所以 m=n1n2m=n_1n_2,其中 1<n1,n2<m1<n_1,n_2<m。由 m 的最小性,较小的 n1n_1 有质因数 p。又因为 p∣n1p\mid n_1 且 n1∣mn_1\mid m,所以 p∣mp\mid m,矛盾。

定理

质数有无限多个

质数有无限多个。

若质数只有有限多个 p1,…,pNp_1,\ldots,p_N,考虑

n=p1p2⋯pN+1.n=p_1p_2\cdots p_N+1.

上一个定理保证 n 有某个质因数。这个质因数必须是列表中的某个 pip_i。但 pip_i 也整除乘积 p1p2⋯pNp_1p_2\cdots p_N,所以它整除差

n−p1p2⋯pN=1,n-p_1p_2\cdots p_N=1,

这不可能。

最大公因数

定义

最大公因数

设 a,b∈Za,b\in\mathbb Z。若 a,b 不同时为零,定义

gcd⁡(a,b)=max⁡{d∈Z:d∣a and d∣b}.\gcd(a,b)=\max\{d\in\mathbb Z:d\mid a\text{ and }d\mid b\}.

若 a=b=0a=b=0,则定义 gcd⁡(0,0)=0\gcd(0,0)=0。

当输入不全为零时,最大值存在,因为共同因数的绝对值受到限制。除了 a=b=0a=b=0 的特殊情况外,gcd⁡(a,b)\gcd(a,b) 都是正整数。

定义

互质

两个非零整数 a,b 若唯一的正共同因数是 1,则称它们互质。等价地,

gcd⁡(a,b)=1.\gcd(a,b)=1.

最大公因数可用来移除两个整数的共同部分。若

d=gcd⁡(a,b),d=\gcd(a,b),

则

gcd⁡(ad,bd)=1.\gcd\left(\frac ad,\frac bd\right)=1.

例如 gcd⁡(126,140)=14\gcd(126,140)=14,所以

126140=910,\frac{126}{140}=\frac{9}{10},

而 9 与 10 互质。

除法算法

接下来的问题是计算性的:若不能事先列出所有共同因数,怎样求最大公因数?关键是带有受控余数的整数除法。

定理

除法算法

设 a,b∈Za,b\in\mathbb Z 且 b≠0b\ne0。则存在唯一整数 q,r 使得

a=bq+r,0≤r<∣b∣.a=bq+r,\qquad 0\le r<|b|.

q 称为商,r 称为余数。

条件 0≤r<∣b∣0\le r<|b| 不是附加装饰,而是唯一性的核心。例如

17=5⋅3+217=5\cdot3+2

符合除法算法;但

17=5⋅2+717=5\cdot2+7

不符合,因为余数 7 不小于 5。

常见错误

不能忽略余数范围

只写 a=bq+ra=bq+r 并不足够。若不限制 r,同一个 a 可以有无限多种表示。条件 0≤r<∣b∣0\le r<|b| 才会选出标准的商与余数。

最大公因数不变性与欧几里得算法

除法算法有用,是因为把 (a,b) 换成 (b,r) 不会改变最大公因数。

定理

最大公因数的一步不变性

若 a=bq+ra=bq+r,则

gcd⁡(a,b)=gcd⁡(b,r).\gcd(a,b)=\gcd(b,r).

理由是:a,b 的共同因数会整除 r=a−bqr=a-bq;反过来,b,r 的共同因数会整除 a=bq+ra=bq+r。因此两对数的正共同因数完全相同。

例题

用欧几里得算法求 gcd⁡(7224,1290)\gcd(7224,1290)

反复使用除法算法:

7224=1290⋅5+774,1290=774⋅1+516,774=516⋅1+258,516=258⋅2+0.\begin{aligned} 7224&=1290\cdot5+774,\\ 1290&=774\cdot1+516,\\ 774&=516\cdot1+258,\\ 516&=258\cdot2+0. \end{aligned}

最后一个非零余数是 258,所以

gcd⁡(7224,1290)=258.\gcd(7224,1290)=258.

算法必然停止,因为余数形成严格递减的非负整数列:

r1>r2>r3>⋯≥0.r_1>r_2>r_3>\cdots\ge0.

非负整数不可能无限地严格递减。

扩展欧几里得算法与 Bézout 恒等式

同一个计算可以倒推,将最大公因数写成原本两个数的整数线性组合。

例题

倒代回去

由前面的计算,

258=774−516.258=774-516.

代入 516=1290−774516=1290-774:

258=774−(1290−774)=2⋅774−1290.258=774-(1290-774)=2\cdot774-1290.

再代入 774=7224−5⋅1290774=7224-5\cdot1290:

258=2(7224−5⋅1290)−1290=2⋅7224−11⋅1290.258=2(7224-5\cdot1290)-1290 =2\cdot7224-11\cdot1290.

因此

258=7224⋅2+1290⋅(−11).258=7224\cdot2+1290\cdot(-11).

观看欧几里得算法如何变成 Bézout 恒等式

向下的欧几里得计算和向上的倒代不是两个互不相干的技巧。它们是同一批带余除法等式的两种读法:先用来找最后非零余数,再把那个余数改写成原本两个整数的线性组合。

图解说明

从欧几里得算法到 Bézout

观看欧几里得算法如何先找出 gcd,再倒代成可用于整数方程的具体 Bézout 恒等式。

欧几里得算法向下经过越来越小的余数来求 gcd。扩展算法再把同一批等式倒过来读,把 gcd 写成 Bézout 组合,因此 gcd(a,b) 会控制 ax+by=c 何时有整数解。

定理

Bézout 恒等式

对任意整数 a,b,存在整数 x,y 使得

gcd⁡(a,b)=ax+by.\gcd(a,b)=ax+by.

这个结果说明,最大公因数不只是最大的共同因数;它也可以由 a,b 的整数线性组合产生。

定理

互质判别

设 a,b 为非零整数。则 a,b 互质,当且仅当存在整数 x,y 使得

ax+by=1.ax+by=1.

若 gcd⁡(a,b)=1\gcd(a,b)=1,这就是 Bézout 恒等式。反过来,若 ax+by=1ax+by=1,任何共同因数都必须整除 1,所以最大正共同因数只能是 1。

例题

扩展欧几里得表格的结果

对 12345 与 11111,欧几里得算法给出

12345=11111⋅1+1234,11111=1234⋅9+5,1234=5⋅246+4,5=4⋅1+1,4=1⋅4+0.\begin{aligned} 12345&=11111\cdot1+1234,\\ 11111&=1234\cdot9+5,\\ 1234&=5\cdot246+4,\\ 5&=4\cdot1+1,\\ 4&=1\cdot4+0. \end{aligned}

所以最大公因数是 1。倒代或使用系数表格可得

1=12345(−2224)+11111(2471).1=12345(-2224)+11111(2471).

这特别证明 12345 与 11111 互质。

共同因数与 Euclid 引理

Bézout 恒等式也给出最大公因数的另一个重要刻画。

定理

共同因数整除最大公因数

对整数 a,b,n,

n∣a and n∣b⟺n∣gcd⁡(a,b).n\mid a\text{ and }n\mid b \quad\Longleftrightarrow\quad n\mid \gcd(a,b).

正向尤其有用。若 n 同时整除 a 和 b,则 n 整除任意线性组合 ax+byax+by;特别地,它整除等于 gcd⁡(a,b)\gcd(a,b) 的 Bézout 线性组合。

定理

Euclid 引理

设 p 是质数。若 p∣abp\mid ab,则 p∣ap\mid a 或 p∣bp\mid b。

若 p∤ap\nmid a,则 gcd⁡(a,p)=1\gcd(a,p)=1,所以存在整数 m,n 使

am+pn=1.am+pn=1.

两边乘以 b 得

abm+pbn=b.abm+pbn=b.

因为 p∣abp\mid ab,左边两项都被 p 整除,所以 p∣bp\mid b。

唯一质因数分解

定理

算术基本定理

每个大于 1 的正整数都可以写成质数乘积,而且这个乘积在不计因子次序下唯一。

存在性仍然来自最小反例法。若存在最小的、大于 1 且不能写成质数乘积的整数,它不可能是质数,因此可分解成两个更小的因数;但这两个较小因数已经可以分解成质数乘积,矛盾。

唯一性使用 Euclid 引理。若

p1p2⋯pr=q1q2⋯qs,p_1p_2\cdots p_r=q_1q_2\cdots q_s,

则 p1p_1 整除右边乘积,所以 p1p_1 必整除某个质因数 qjq_j,从而 p1=qjp_1=q_j。消去后重复同样论证。

这个定理也给出计算最大公因数的指数方法。若

a=p1m1⋯prmr,b=p1n1⋯prnr,a=p_1^{m_1}\cdots p_r^{m_r}, \qquad b=p_1^{n_1}\cdots p_r^{n_r},

其中缺少的质数用指数 0 补上,则

gcd⁡(a,b)=p1min⁡(m1,n1)⋯prmin⁡(mr,nr).\gcd(a,b)=p_1^{\min(m_1,n_1)}\cdots p_r^{\min(m_r,n_r)}.

例题

用质因数幂次求最大公因数

因为

144=24⋅32,60=22⋅3⋅5,144=2^4\cdot3^2,\qquad 60=2^2\cdot3\cdot5,

所以

gcd⁡(144,60)=22⋅31⋅50=12.\gcd(144,60)=2^2\cdot3^1\cdot5^0=12.

一次 Diophantine 方程

未知数 x,y 必须是整数的方程

ax+by=cax+by=c

称为一次 Diophantine 方程。Bézout 恒等式可以完全判定它何时有解。

定理

可解条件

设 a,b,c∈Za,b,c\in\mathbb Z,且 d=gcd⁡(a,b)d=\gcd(a,b)。方程

ax+by=cax+by=c

有整数解 (x,y),当且仅当 d∣cd\mid c。

若解存在,因为 d 整除 a,b,所以 d 整除 ax+by=cax+by=c。反过来,若 c=drc=dr,由 Bézout 恒等式有 d=am+bnd=am+bn,因此

c=dr=a(mr)+b(nr).c=dr=a(mr)+b(nr).

所以 (mr,nr) 是一组解。

若已知一组解,也可以描述所有解。设 d=gcd⁡(a,b)≠0d=\gcd(a,b)\ne0,并令

u=ad,v=bd.u=\frac ad,\qquad v=\frac bd.

若 (x0,y0)(x_0,y_0) 是一组解,则所有解为

x=x0+kv,y=y0−ku,k∈Z.x=x_0+kv,\qquad y=y_0-ku,\qquad k\in\mathbb Z.

例题

量水问题

若有 180 mL 的杯和 105 mL 的玻璃杯,能否量出刚好 30 mL?代数上,我们要判断

180x+105y=30180x+105y=30

是否有整数解。因为

gcd⁡(180,105)=15\gcd(180,105)=15

且 15∣3015\mid 30,所以有解。

由扩展欧几里得算法,

15=180⋅3−105⋅5.15=180\cdot3-105\cdot5.

乘以 2 得

30=180⋅6−105⋅10.30=180\cdot6-105\cdot10.

所以一组解是 (x,y)=(6,−10)(x,y)=(6,-10)。因为 a/d=12a/d=12 且 b/d=7b/d=7,所有解为

(x,y)=(6+7k,−10−12k),k∈Z.(x,y)=(6+7k,-10-12k),\qquad k\in\mathbb Z.

快速检查

快速检查

以整数语言来说,a∣ba\mid b 是什么意思?

留意定义中隐含的存在量词。

解答

答案

快速检查

为什么 a 和 b 的每个共同因数都会整除 ax+byax+by,其中 x,y∈Zx,y\in\mathbb Z?

分别使用两次整除定义。

解答

答案

快速检查

在 7224 与 1290 的欧几里得算法中,为什么最大公因数是最后一个非零余数?

每一步都用 gcd⁡(a,b)=gcd⁡(b,r)\gcd(a,b)=\gcd(b,r)。

解答

答案

快速检查

判断 ax+by=cax+by=c 是否有整数解的条件是什么?

用 gcd⁡(a,b)\gcd(a,b) 表述。

解答

答案

练习

  1. 列出 84 的所有正因数,并求 gcd⁡(84,60)\gcd(84,60)。
  2. 用除法算法把 −37-37 写成 −37=5q+r-37=5q+r,其中 0≤r<50\le r<5。
  3. 用欧几里得算法求 gcd⁡(252,198)\gcd(252,198)。
  4. 将 gcd⁡(252,198)\gcd(252,198) 写成 252x+198y252x+198y。
  5. 证明:若 n∣an\mid a 且 n∣bn\mid b,则 n∣gcd⁡(a,b)n\mid\gcd(a,b)。
  6. 判断 35x+21y=1435x+21y=14 是否有整数解;若有,求一组解。
  7. 判断 35x+21y=1035x+21y=10 是否有整数解。
  8. 用质因数分解求 gcd⁡(24⋅32⋅5, 23⋅35⋅7)\gcd(2^4\cdot3^2\cdot5,\, 2^3\cdot3^5\cdot7)。

解答

引导解答

本节掌握 checkpoint

要完成这一节 checkpoint,需要把每一题答对。 答对进度: 0%.

技能点: integer-methods, gcd, euclidean-algorithm

使用第 7 章的欧几里得算法:7224=1290⋅5+7747224=1290\cdot5+774,1290=774⋅1+5161290=774\cdot1+516,774=516⋅1+258774=516\cdot1+258,516=258⋅2+0516=258\cdot2+0。填空:\gcd(7224,1290)=____。

已用尝试次数: 0

剩余尝试次数: 不限尝试次数

预览不会消耗尝试次数。

提交会记录一次正式评分尝试。

输入格式提示: 请输入最后一个非零余数。

  • 请输入一个正整数。

技能点: integer-methods, linear-diophantine-equations, gcd

哪一个陈述正确判断 35x+21y=1035x+21y=10 是否有整数解?

已用尝试次数: 0

剩余尝试次数: 不限尝试次数

预览不会消耗尝试次数。

提交会记录一次正式评分尝试。

  • 35=7⋅535=7\cdot5 且 21=7⋅321=7\cdot3,所以最大公因数是 7。

本单元重点词汇

Premium learning add-ons

Core notes stay free. Advanced exercises, video explanations, and premium exports are available through paid plans.