最大公约数简介
最大公约数(也称最大公因数,英文缩写为GCD),就是指对于2个数a和b,它们的公因数中最大的那个
比如100和75,它们的公因数有1,5,25
,而最大的那个是25
,所以100和75的最大公因数为25
a和b的最大公约数可以这样表示:(a,b)
最小公倍数简介
最小公倍数(英文缩写为LCM),就是指对于2个数a和b,它们的公倍数中最小的那个
仍然拿100和75举例,它们的公倍数有300 600 900...
,其中最小的是300,所以100和75的最小公倍数为300
a和b的最小公倍数可以这样表示:[a,b]
gcd、lcm代码
那么,介绍完了最大公约数和最小公倍数后,就要看一下它们的代码了
对于a和b,求(a,b)
可以用辗转相除法,这里就不介绍了,直接上代码
// 最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
对于这个代码,我们可以用三目运算符?:
进行化简:
// 最大公约数(最简)
int gcd(int a, int b) {
return (b == 0 ? a : gcd(b, a % b));
}
而最小公倍数就更简单了,只要用a*b
和积除以(a,b)
即可
总而言之,[a,b]=a*b/(a,b)
// 最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
// gcd(int,int) 必需被定义或声明过
}
小结
求两个数的最大公约数可以用辗转相除法,而求它们的最小公倍数就只要运用这个公式即可[a,b]=a*b/(a,b)
或lcm(a,b)=a * b / gcd(a, b)
如果本文对您有帮助,请点个赞或收藏吧!
本文如有不对之处请补充,谢谢