猿问
下载APP

3个或更多数字的最小公倍数

3个或更多数字的最小公倍数

如何计算多个数字的最小公倍数?

到目前为止,我只能在两个数字之间进行计算。但不知道如何扩展它来计算3个或更多数字。

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

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

使用gcd是计算数字的最大公约数的函数。使用欧几里得算法

但我无法弄清楚如何计算3个或更多数字。


茅侃侃
浏览 56回答 3
3回答

拉莫斯之舞

您可以通过迭代计算两个数字的LCM来计算两个以上数字的LCM,即lcm(a,b,c) = lcm(a,lcm(b,c))

catspeake

在Python中(修改后的primes.py):def gcd(a, b):     """Return greatest common divisor using Euclid's Algorithm."""     while b:               a, b = b, a % b     return adef 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))232792560reduce()工作原理是这样认为:>>> f = lambda a,b: "f(%s,%s)" % (a,b)>>> print reduce(f, "abcd")f(f(f(a,b),c),d)

阿波罗的战车

这是一个ECMA风格的实现:function gcd(a, b){     // Euclidean algorithm     var t;     while (b != 0){         t = b;         b = a % b;         a = t;     }     return a;}function lcm(a, b){     return (a * b / gcd(a, b));}function lcmm(args){     // Recursively iterate through pairs of arguments     // i.e. lcm(args[0], lcm(args[1], lcm(args[2], args[3])))     if(args.length == 2){         return lcm(args[0], args[1]);     } else {         var arg0 = args[0];         args.shift();         return lcm(arg0, lcmm(args));     }}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答