一、最大公约数
使用辗转相除法求最大公约数,递归实现:
//求最大公约数,辗转相除法递归实现
int gcd(int a, int b)
{
//递归边界 b=0
if(0 == b)
{
return a;
}
else
{
return gcd(b, a%b);
}
}
二、最小公倍数
在最大公约数的基础上求最小公倍数。若 a , b a,b a,b的最大公约数为 d d d,则最小公倍数为 a ∗ b / d a*b/d a∗b/d。防止乘积溢出,可写成 a / d ∗ b a/d*b a/d∗b。
// 求最小公倍数
int lcm(int a, int b)
{
return a/gcd(a, b)*b;
}