本题实际上为求多个(3个)数的最小公倍数,可以通过先求两个数的最小公倍数,然后再逐个求最小公倍数的方法来实现。
具体地,设要求多个数 的最小公倍数为 ,则有以下公式:
其中, 表示 和 的最小公倍数。
因此,可以写出求多个数的最小公倍数的代码如下:
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
def lcm(a, b):
return a // gcd(a, b) * b
def multiple_lcm(nums):
n = len(nums)
res = nums[0]
for i in range(1, n):
res = lcm(res, nums[i])
return res
其中,gcd 函数用于求两个数的最大公约数,lcm 函数用于求两个数的最小公倍数,multiple_lcm 函数用于求多个数的最小公倍数。求两个数的最大公约数,使用的是辗转相除法,也叫欧几里得算法