C++算法基础之 最大公约数gcd 和 最小公倍数lcm

2 篇文章 0 订阅

最大公约数简介

最大公约数(也称最大公因数,英文缩写为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)

如果本文对您有帮助,请点个赞或收藏吧!
本文如有不对之处请补充,谢谢

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jcShan709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值