最大公约数
利用辗转相除法,当后一项为0时得到最大公约数。
- 递归式:gcd(a, b) = gcd(b, a % b)
- 递归边界:gcd(a, 0) = a
代码如下:
int gcd(int a, int b){
return !b ? a : gcd(b, a % b);
}
注:该函数运用过程需要注意保证
a
≥
b
a≥b
a≥b。
最小公倍数
由于
a
b
ab
ab在实际计算中可能溢出,因此应用
a
/
d
∗
b
a / d * b
a/d∗b,其中d为a与b的最大公约数。
代码如下:
lcm(int a, int b){
return a / gcd(a, b) * b;
}