為何整數算術需要新的語言
整數算術看似熟悉,但要證明關於整數的命題,不能只沿用實數除法的直覺。在實數代數中,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)。