如何求解两个数的最小公倍数
假如要求解a和b的最小公倍数,一般可以转换成求解两个数的乘积除以最大公约数:
性质如下a * b = [a, b] * (a, b);
a * b表示a和b的乘积
[a, b]表示a和b的最小公倍数
(a, b)表示a和b的最大公约数
由于yxc大佬已经分享了最大公约数的欧几里得算法
int gcd(int a, int b)
{
return b? gcd(b, a % b): a;
}
所以可以很容易求出[a, b] = a * b / (a, b) = a * b / gcd (a, b);
int gcd(int a, int b)
{
return b? gcd(b, a % b): a;
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
应该写成 a/gcd(a,b)b,因为ab可能爆空间