-
設 a = kb + r, 其中 a, b, q, r 都為整數, 那麼: gcd(a, b) = gcd(b, r)
-
設整數 a, b 且 b != 0. 做帶餘除法 a = qb + r, (0 <= r <= |b|). 若 r = 0, gcd(a, b) = b; 若 r > 0, 在對b 于 r做帶除餘法 b = q'r + r'. 若 r' = 0, gcd(a, b) = gcd(b, r) = r; 重複上述過程, 直到餘數為0;
-
最大公約數 = gcd(a, b); 最小公倍數 = lcm(a, b) = (a * b)/gcd(a, b)
- 代碼實作:
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a%b);
}
int lcm(int a, int b)
{
return (a * b)/gcd(a, b);
}