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?
asked Aug 6, 2018 at 23:33
0
In Python 3.8 and earlier
There is no such thing built into the stdlib.
However, there is a Greatest Common Divisor function in the math
library. [For Python 3.4 or 2.7, it's buried in fractions
instead.] And writing an LCM on top of a GCD is pretty trivial:
def lcm[a, b]:
return abs[a*b] // math.gcd[a, b]
Or, if you're using NumPy, it's come with an
lcm
function for quite some time now.
Mark Amery
132k78 gold badges392 silver badges442 bronze badges
answered Aug 6, 2018 at 23:39
abarnertabarnert
341k44 gold badges572 silver badges650 bronze badges
2
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
answered Mar 23, 2020 at 22:26
OrangutanOrangutan
9909 silver badges15 bronze badges
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]
answered Aug 6, 2018 at 23:37
Tim PetersTim Peters
64.6k12 gold badges122 silver badges129 bronze badges
5
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]
answered Mar 9, 2020 at 22:22
Satbir KiraSatbir Kira
7426 silver badges20 bronze badges
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
answered Dec 26, 2021 at 19:30
Published at Aug 25, 2021
The Least Common Multiple [LCM] is also referred to as the Lowest Common Multiple [LCM] and Least Common Divisor [LCD]. For two integers a and b, denoted LCM[a,b], the LCM
is the smallest positive integer that is evenly divisible by both a and b. For example, LCM[2,3] = 6 and LCM[6,10] = 30. The LCM of two or more numbers is the smallest number that is evenly divisible by all numbers in the set. def lcm[x, y]: 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 f"The Least Common Multiple of {number_1} and {number_2} is is {lcm[int[number_1], int[number_2]]}"
Least Common Multiple in Python
How to Find the LCM in Python
Example