我目前正在使用一个函数,该函数接受两个数字并使用循环查找这些数字的最小公倍数,
def lcm(x, y):
"""This function takes two
integers and returns the L.C.M."""
# choose the greater number
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
在python中是否有任何内置模块可以代替编写自定义函数?
答案 0 :(得分:28)
它以math.lcm()的形式提供。它还可以使用任意长度的参数,从而使您可以找到2个以上整数的最低公倍数。
答案 1 :(得分:6)
stdlib中没有内置的东西。
但是,math
库中有一个Greatest Common Divisor函数。 (对于Python 3.4或2.7,则将其埋在fractions
中。)在GCD之上编写LCM非常简单:
def lcm(a, b):
return abs(a*b) // math.gcd(a, b)
或者,如果您使用的是NumPy,则现在已经有lcm
函数了。
答案 2 :(得分:4)
尝试以下方法:
def lcm(x, y):
from fractions import gcd # or can import gcd from `math` in Python 3
return x * y // gcd(x, y)
答案 3 :(得分:0)
为了稍微简化代码:
def lcm(x, y):
for currentPossibleLCM in range(max(x,y), (x*y)+1)
if((currentPossibleLCM % x == 0) and (currentPossibleLCM % y == 0)):
return currentPossibleLCM
运行时:O(x * y)