最大公因数刻画两个整数公共的因数结构,辗转相除法(欧几里得算法)给出其高效算法。
定义
设 a,b 是不全为零的整数。它们的最大公因数 gcd(a,b) 是满足以下条件的正整数 d:
- d∣a 且 d∣b;
- 若 c∣a 且 c∣b,则 c∣d。
当 gcd(a,b)=1 时,称 a,b 互素。
欧几里得算法
由带余除法 a=bq+r(0≤r<b)可得 gcd(a,b)=gcd(b,r),反复应用即得辗转相除法:
a=bq1+r1,b=r1q2+r2,…,rn−2=rn−1qn+rn,rn−1=rnqn+1
最后一个非零余数 rn 即为 gcd(a,b)。
性质
- gcd(a,b)=gcd(b,a)=gcd(∣a∣,∣b∣),且 gcd(a,0)=∣a∣
- gcd(a,b)=gcd(a−bq,b)(欧几里得算法的依据)
- Bezout 定理:存在整数 x,y 使得 ax+by=gcd(a,b)
- 若 a∣bc 且 gcd(a,b)=1,则 a∣c
- 最小公倍数:lcm(a,b)=gcd(a,b)∣ab∣
示例
求 gcd(252,105):
252=105⋅2+42,105=42⋅2+21,42=21⋅2
故 gcd(252,105)=21。其 Bezout 表示为
21=105−42⋅2=105−(252−105⋅2)⋅2=105⋅5−252⋅2