最大公约数使用辗转相除法
由于gcd(a,b)=gcd(b,a mod b)
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
最大公倍数×最小公因数=a*b
所以最大公倍数
int gbd(int a,int b)
{
return a/gcd(a,b)*b; //a先除保证不超界
}
注意:
最大公倍数×最小公因数=a*b
这个关系可以逆向考虑,已知两个数的最大公因数和最小公倍数,可以得知两个数的乘积。