-
-
Save endolith/114336 to your computer and use it in GitHub Desktop.
# GCD and LCM are not in math module. They are in gmpy, but these are simple enough: | |
def gcd(a,b): | |
"""Compute the greatest common divisor of a and b""" | |
while b > 0: | |
a, b = b, a % b | |
return a | |
def lcm(a, b): | |
"""Compute the lowest common multiple of a and b""" | |
return a * b / gcd(a, b) | |
This is the simplest lcm formula I could find. Thanks!
good, thanks :)
For python3 support, maybe you should add (it's also compatible with python2 )
from functools import reduce
For python3 use
from math import gcd
fraction gcd has been deprecated.
what does *numbers look like? What is the expected parameter?
Thanks for it!!
thank you!
Excellent! How elegant it is.
For case of n no's in python 2.7
>>> from fractions import gcd
>>> def get_gcd(*nos):
... return reduce(gcd,nos)
...
>>> get_gcd(120,40,60)
20
>>> get_gcd(30,40)
10
thanks very much for the sharing
Concatenated everything for the convenience.
from functools import reduce
from fractions import gcd
def lcm(a, b):
return a * b / gcd(a, b)
def lcms(*numbers):
return reduce(lcm, numbers)
def gcds(*numbers):
return reduce(gcd, numbers)
Last update for Python 3:
from functools import reduce
from math import gcd
def lcm(a, b):
return int(a * b / gcd(a, b))
def lcms(*numbers):
return reduce(lcm, numbers)
@kovalevcon Why int(float division) instead of int division?
Easy! Just do:
import math
ans = math.gcd(8, 10)
For lcm, do:
import math
ans = math.lcm(8, 10)
or:
import math
gcd_ans = math.gcd(8, 10)
lcm_ans = 8 * 10 / gcd_ans
I got it from this site:
https://www.geeksforgeeks.org/gcd-in-python/
Check it out!
I think there should be floordiv instead of truediv in your lcm
import math
def lcm(a, b):
return int(a * b / math.gcd(a, b))
print(lcm(2, 6))
Great code! Can you plz explain me how does GCD works in your program?
Use this line of code to take LCM. Its fast and give you LCM of multiple numbers
import numpy as np
divisor_list = [3,4,5,6,7,2]
int(np.lcm.reduce(divisor_list))
Use this line of code to take LCM. Its fast and give you LCM of multiple numbers
import numpy as np divisor_list = [3,4,5,6,7,2] int(np.lcm.reduce(divisor_list))
Thanks alot
It's not mentioned here, but this is the Euclidean algorithm for computing the GCD: https://en.wikipedia.org/wiki/Euclidean_algorithm
Love how short the code is!
def find_gcd(a,b):
gcd = 1
for i in range(1,a+1):
if a%i==0 and b%i==0:
gcd = i
return gcd
first = int(input('Enter first number: '))
second = int(input('Enter second number: '))
print('HCD of %d and %d is %d' %(first, second, find_gcd(first, second)))
lcm = first * second / find_gcd(first, second)
print('MCM of %d and %d is %d' %(first, second, lcm))
print("azam")
http://rik0-techtemple.blogspot.com/2010/09/nice-functional-lcm-in-python.html