如何计算3个或3个以上数字的最小公共倍数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

如何计算多个数字的最不常见倍数?

到目前为止,我只能在两个数字之间计算。但不知道如何将其展开来计算3个或更多的数字。

到目前为止我就是这么做的

LCM = num1 * num2 /  gcd ( num1 , num2 )

GCD是计算数字最大公因子的函数。使用欧氏算法

但我不知道如何计算出3个或更多的数字。

提问于
用户回答回答于

可以通过迭代计算两个以上数的LCM,即

lcm(a,b,c) = lcm(a,lcm(b,c))
用户回答回答于

在Python中

def gcd(a, b):
    """Return greatest common divisor using Euclid's Algorithm."""
    while b:      
        a, b = b, a % b
    return a

def lcm(a, b):
    """Return lowest common multiple."""
    return a * b // gcd(a, b)

def lcmm(*args):
    """Return lcm of args."""   
    return reduce(lcm, args)

用法:

>>> lcmm(100, 23, 98)
112700
>>> lcmm(*range(1, 20))
232792560

reduce()如下:

>>> f = lambda a,b: "f(%s,%s)" % (a,b)
>>> print reduce(f, "abcd")
f(f(f(a,b),c),d)

扫码关注云+社区