场景
代码实现
# -*-coding:utf-8-*-
from functools import reduce
def spread(arg):
'''解析参数,将原始参数组装成单个列表'''
ret = []
for i in arg:
if isinstance(i, list):
ret.extend(i)
else:
ret.append(i)
return ret
def lcm(*args):
numbers = []
numbers.extend(spread(list(args)))
def _gcd(x, y):
'''获取两个数的最大公约数 '''
if not y:
return x
else:
_gcd(y,x%y)
x % y 计算两个数的余数
'''
return x if not y else _gcd(y, x % y)
def _lcm(x, y):
'''计算两个整数的最小公倍数'''
return x * y / _gcd(x, y)
return reduce(lambda x, y: _lcm(x, y), numbers)
if __name__ == "__main__":
print(lcm(12, 2))
print(lcm([1, 4, 5, 6], 8))
# 结果
12.0 # 2*6*1
120.0 # 2*4*5*3
详解