1.最大公约数GCD
介绍:整数a和b的最大公约数是指能同时被a和b整除的最大整数,整数a和b的最大公约数记为gcd(a,b)
可以定义多个整数的最大公约数:gcd(a,b,c)=gcd[gcd(a,b),c];
算法:
(1)欧几里得算法
经典的欧几里得算法,用辗转相除法求最大公约数。
代码演示:
int gcd(int a,int b){
return b == 0 ? a : gcd(b,a%b);
}
(2)或者直接用C++的内置函数求GCD:
std:__gcd(a,b)
2.最小公倍数LCM
介绍:整数a和b的最小公倍数记为lcm(a,b)。
重点:a*b=lcm(a,b)*gcd(a,b)
注意:求最小公倍数时最好先做除法再做乘法,不然数据可能会溢出
代码演示:
int lcm(int a,int b){
return a/gcd(a,b)*b;
}