最大公约数(gcd)和最小公倍数(lcm)求解

最大公约数

正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,例如4和6的最大公约数为2;3和9的最大公约数为3。

一般用 gcd(a, b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法)。
欧几里得算法基于下面这个定理:
设a、b均为正整数,则gcd(a, b)= gcd(b, a %b)
由上面这个定理可以发现,如果a<b,那么定理的结果就是将a和b交换;如果a>b,那么通过这个定理总可以将数据规模变小,并且减小得非常快。
这样似乎可以很快得到结果,只是还需要一个东西:递归边界,即数据规模减小到什么程度使得可以算出结果来。
很简单,众所周知: 0和任意一个整数 a的最大公约数都是a (注意:不是0),这个结论就可以当作递归边界。由此便可以写出递归形式
①递归式: gcd(a, b)= gcd(b, a% b)
②递归边界: gcd(a, 0)= a
递归函数写法:

int gcd(int a,int b)
{
	if(b==0)return a;
	else return gcd(b,a%b);
}
最小公倍数

正整数a和b的最小公倍数是指a和b的所有公倍数中最小的那个公倍数,例如4和6的最小公倍数为12;3和9的最小公倍数为9。

最小公倍数需要在最大公约数的基础上进行。假设a和b的最大公约数是d,那么a和b的最小公倍数是a*b/d。
但是在程序竞赛中a*b基本上都会有测试点考验溢出问题,因此写成a/d * b更恰当,因为这不需要考虑溢出问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 最大公约数和最小公倍数的关系是:它们的乘积等于这两个数的积。 具体地说,对于两个正整数a和b,它们的最大公约数记为gcd(a,b),最小公倍数记为lcm(a,b),则有: gcd(a,b) * lcm(a,b) = a * b 例如,对于数 12 和 16,它们的最大公约数是4,最小公倍数是48,而4*48=12*16=192。 ### 回答2: 最大公约数和最小公倍数两个数学概念,它们之间存在着一定的关系。 最大公约数(Greatest Common Divisor,简称GCD)是指能够同时整除两个或多个数的最大正整数最小公倍数(Least Common Multiple,简称LCM)是指能够同时被两个或多个数整除的最小正整数。 首先,我们可以使用最大公约数最小公倍数。若两个数a和b的最大公约数记为gcd(a,b),最小公倍数记为lcm(a,b),那么可以得出一个结论: lcm(a,b) = |a * b| / gcd(a,b) 这个公式的推导依据是:两个数的乘积等于它们的最大公约数最小公倍数的乘积。因此,我们可以通过求解最大公约数求解最小公倍数。 另外,最大公约数和最小公倍数还具有以下关系: - 两个数的最大公约数可以被它们的最小公倍数整除。 - 两个数的最小公倍数可以被它们的最大公约数整除。 最大公约数和最小公倍数常常在数学问题的求解中用到,尤其在分数的化简、约分和比较等运算中。 ### 回答3: 最大公约数和最小公倍数两个数的重要特征。最大公约数是指能够同时整除两个数的最大的正整数,而最小公倍数则是指能够同时被两个数整除的最小的正整数最大公约数和最小公倍数之间存在一定的关系。首先,两个数的最大公约数一定能够整除它们的最小公倍数。这是因为最大公约数两个数的公共因数,而最小公倍数两个数的公共倍数,因此最大公约数一定能够整除最小公倍数。 另外,最大公约数和最小公倍数之间还有一个重要的关系。两个数的最大公约数和最小公倍数的乘积等于这两个数的乘积。这可以通过数学归纳法来证明。假设两个数的最大公约数gcd最小公倍数lcm,那么可以将这两个数表示为a = gcd * x,b = gcd * y,其中x和y为整数。根据最小公倍数的定义,lcm = a * b / gcd = (gcd * x) * (gcd * y) / gcd = gcd * x * y = a * b,所以最大公约数和最小公倍数的乘积等于这两个数的乘积。 总结起来,最大公约数能够整除最小公倍数,而最大公约数和最小公倍数的乘积等于这两个数的乘积。这些关系给出了最大公约数和最小公倍数之间的密切联系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值