内置模块计算最小公倍数

时间:2018-08-06 23:33:31

标签: python

我目前正在使用一个函数,该函数接受两个数字并使用循环查找这些数字的最小公倍数,

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中是否有任何内置模块可以代替编写自定义函数?

4 个答案:

答案 0 :(得分:28)

在3.9或更高版本的Python中

它以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)