'Built-in module to calculate the least common multiple

I am currently using a function that accepts two numbers and uses a loop to find the least common multiple of those numbers,

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

Is there a built-in module in Python that does it instead of writing a custom function?



Solution 1:[1]

In Python 3.9+

This is available as math.lcm(). It also takes any number of arguments, allowing you to find the lowest common multiple of more than 2 integers.

For example:

>>> from math import lcm
>>> lcm(2, 5, 7)
70

Solution 2:[2]

Try this instead:

def lcm(x, y):
    from fractions import gcd # or can import gcd from `math` in Python 3
    return x * y // gcd(x, y)

Solution 3:[3]

To simplify your code a little:

def lcm(x, y):
    for currentPossibleLCM in range(max(x,y), (x*y)+1)
         if((currentPossibleLCM % x == 0) and (currentPossibleLCM % y == 0)):
              return currentPossibleLCM

Runtime: O(x*y)

Solution 4:[4]

This is not only for two numbers specifically but for finding LCM of an array of integers. (without using math.lcm())

import math
from functools import reduce

def lcm(arr):

    l=reduce(lambda x,y:(x*y)//math.gcd(x,y),arr)
    return l

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Tim Peters
Solution 3 Satbir Kira
Solution 4