学习笔记:求一串连续数字(range)的最小公倍数

1. 基本思路

这个算法是用辗转相除法实现的,所以这里只讲辗转相除法的原理。
需要为这个问题设置两个函数,一个求最大公因数,另一个借返回的最大公因数的值求最小公倍数。
假设求(18, 23)这个范围内的所有数字的最小公倍数:

18                                        18                                                                    18
18 19                                    18 * 19                                                             342
18 19 20                               18 * 19 * 20 / 2                                                 342 * 20 / 2
18 19 20 21                           18 * 19 * 20 / 2 * 21 / 3                                     3420 * 21 / 3
18 19 20 21 22                      18 * 19 * 20 / 2 * 21 / 3 * 22 / 2                         23940 * 22 / 2
18 19 20 21 22 23                  18 * 19 * 20 / 2 * 21 / 3 * 22 / 2 * 23                 263340 * 23
 
其中除号后面的数为该数字与前面所有数字最小公倍数的最大公因数,我们需要除掉最大公因数,然后累乘得到新的最小公倍数。
为了简便运算,减少不必要的遍历,所以我们只在求最大公因数的算法里传入两个数值,即之前所有数字的最小公倍数和将要处理的数字。在求最小公倍数时,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是两个函数的 Python 实现: ```python def gcd(a, b): """ 解 a 和 b 的最大公约数 """ while b != 0: a, b = b, a % b return a def lcm(a, b): """ 解 a 和 b 的最小公倍数 """ return a * b // gcd(a, b) ``` 其中,`gcd` 函数采用了辗转相除法解最大公约数,`lcm` 函数则通过最大公约数最小公倍数。 ### 回答2: 最大公约数(GCD)是指两个或多个整数共有的约数中最大的一个数。而最小公倍数(LCM)是指两个或多个整数共有的倍数中最小的一个数。 下面分别定义两个函数解最大公约数和最小公倍数: 1. 最大公约数(GCD)的函数: 输入:两个整数a和b 输出:整数a和b的最大公约数 定义函数gcd(a, b): 若a能整除b,返回b 否则,返回gcd(b, a % b) 若a和b是非负整数,则可以使用欧几里得算法来递归地解最大公约数。该算法的基本思想是,用较大数除以较小数得到余数,将较小数和余数之间的最大公约数作为新的较小数,再将新的较小数和余数之间的最大公约数作为新的较小数,如此重复直到余数为0,此时较小数即为最大公约数。 2. 最小公倍数(LCM)的函数: 输入:两个整数a和b 输出:整数a和b的最小公倍数 定义函数lcm(a, b): gcd = gcd(a, b) 返回 a * b / gcd 最小公倍数可以通过最大公约数来解。通过公式 a * b = gcd * lcm,可以得到 lcm = a * b / gcd。 以上两个函数分别可以用来解最大公约数和最小公倍数。 ### 回答3: 最大公约数(GCD)是指两个或多个整数中最大的能够整除所有这些数的正整数。最大公约数的一种常见方法是欧几里得算法。 欧几里得算法的基本思想是通过连续地用较小数除以较大数的余数来替换较大数,直到余数为0,此时较小的数就是最大公约数。根据这一思想,我们可以定义一个函数gcd来解最大公约数: 函数名称:gcd 输入:两个正整数a和b 输出:a和b的最大公约数 步骤: 1. 如果b等于0,返回a(递归边界条件)。 2. 否则,返回调用gcd函数计算b和a除以b的余数的最大公约数。 最小公倍数(LCM)是指两个或多个整数的公共倍数中最小的那个整数。最小公倍数的一种常见方法是使用最大公约数。 根据最大公约数和最小公倍数的关系,我们可以定义一个函数lcm来最小公倍数: 函数名称:lcm 输入:两个正整数a和b 输出:a和b的最小公倍数 步骤: 1. 首先,计算a和b的最大公约数gcd。 2. 然后,使用公式lcm = a * b / gcd计算最小公倍数。 3. 返回最小公倍数。 通过这两个函数,我们可以方便地解给定两个整数的最大公约数和最小公倍数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值