最大公约数(GCD):
辗转相除法基本原理:
首先a >= b
a / b == q … r1 (r1 >= 0)
- 如果 r1 == 0, 则最大公约数为b
- 如果 r1 != 0, 则 b / r1 == q … r2 (r2 >= 0)
- 直到最后一个余数为零的式子的除数就是其最大公约数
递归代码:
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a%b);
}
最小公倍数(LCM):
便捷求法:
最大公约数和最小公倍数的关系为:
lcm = (a*b) / gcd;