本题实际上为求多个(3个)数的最小公倍数,可以通过先求两个数的最小公倍数,然后再逐个求最小公倍数的方法来实现。

具体地,设要求多个数 a1,a2,,ana_1,a_2,\dots,a_n 的最小公倍数为 lcm(a1,a2,,an)lcm(a_1,a_2,\dots,a_n),则有以下公式:

lcm(a1,a2,,an)=lcm(lcm(a1,a2),a3,,an)lcm(a_1,a_2,\dots,a_n)=lcm(lcm(a_1,a_2),a_3,\dots,a_n)

其中,lcm(a,b)lcm(a,b) 表示 aabb 的最小公倍数。

因此,可以写出求多个数的最小公倍数的代码如下:

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 函数用于求多个数的最小公倍数。求两个数的最大公约数,使用的是辗转相除法,也叫欧几里得算法