欧几里得算法
(Euclid's Algorithm)
定理:
1) 如果a能整除b,那么a和b的最大公约数gcd (a, b) = b
2) 如果a = bt + r,t、r均为整数,则最大公约数gcd(a, b) = gcd(b, r)
※ r能整除a和b的每个公约数,所以a和b的最大公约数必定能被r整除。同时,由(1)得,gcd (a, b) = b,因此gcd (a, b)是b和r的公约数,从而推得gcd (a, b) ≤ gcd(b, r)。反推亦可。
推论:
对于每一对整数a和b,总有gcd (a, b) = as + bt
※注:以上a、b均为非负整数,且不互质。
举例:
a = 2322
b = 654
2322 = 654·3 + 360 gcd (2322, 654) = gcd (654, 360)
654 = 360·1 + 294 gcd (654, 360) = gcd (360, 294)
360 = 294·1 + 66 gcd (360, 294) = gcd (294, 66)
294 = 66·4 + 30 gcd (294, 66) = gcd (66, 30)
66 = 30·2 + 6 gcd (66, 30) = gcd (30, 6)
30 = 6·5 gcd (30, 6) = 6
因此:
gcd (2322,654) = 6 (由定理得)
2322×20 + 654× (-71) = 6 (由推论得)
相关:
1) a × b = gcd(a, b) × lcm(a, b)
2) 任何线性组合as + bt都可被a和b的任意公因数除尽,尤其是任意a和b的公因数都能被最大公约数gcd (a, b)整除。
3) gcd (a, b)是as + bt中的最小正整数
4) 对于互质数,有as + bt = 1
5) 若ab整除m,且gcd (a, m) = 1,则b能整除m
6) 算术基本定理(Fundamental Theorem of Arithmetic):
任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积