本篇文章小编给大家分享一下Python实现列表的最小公倍数代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
1. lcm
from functools import reduce from math import gcd def lcm(numbers): return reduce((lambda x, y: int(x * y / gcd(x, y))), numbers) # EXAMPLES lcm([12, 7]) # 84 lcm([1, 3, 4, 5]) # 60
两个数的最大公约数和最小公倍数满足如下公式:
lcm(a, b) * gcd(a, b) = abs(a * b)
而对于两个以上数据的列表时,只需要将任意两个数的最小公倍数和剩下的其他数字继续计算最小公倍数即可。
也就是说:
lcm(a, b, c, ...) = lcm(lcm(a, b), c, ...)
因此我们使用functools.reduce函数对列表进行迭代。
2. functools.reduce
functools.reduce(function, iterable[, initializer])
reduce函数中的第一个参数是函数function,它接受两个参数。reduce函数将function累积的应用在第二个参数,iterable,可迭代的对象上。function使用可迭代对象的前两个值作为输入参数,并将返回值和可迭代对象的下一个值作为function的输入参数进行下一次迭代,直到用尽可迭代对象的所有值。例如以下的例子:
# ((((1+2)+3)+4)+5) reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
reduce函数大致相当于:
def reduce(function, iterable, initializer=None): it = iter(iterable) if initializer is None: value = next(it) else: value = initializer for element in it: value = function(value, element) return value
3. 实际使用
上面的代码片段是展示了Python一种使用方法。细心的同学可以看出来,如果要投入实际生产应用,lcm函数是有一些问题的,主要是两点,一是异常处理,包括除零等;另一个是最小公倍数都是正整数,而该函数的返回值可能出现负数。
摩尔庄园 安卓官方版v2.9.24091002S
摩尔庄园很多小伙伴一定都在小时候玩过,但随着我们年龄的增长淡
梦幻庄园最新版 官方正版v1.0.0
梦幻庄园是一款非常好玩的模拟经营类游戏,玩家在游戏中有一个属
合并梦幻岛免内购版 v2.1.0
合并梦幻岛无限内购版是游戏的破解版本,在该版本中为玩家解锁了
无悔华夏魅族版 2025最新版v3.5.194
无悔华夏魅族版是一款超级好用的模拟经营游戏。在这里玩家们需要
月影别墅官方安装包2025版 安卓版v2.3.24
月影别墅官方安装包2025版是一款匠心独具的乙女向剧情游戏,