Skip to content

Instantly share code, notes, and snippets.

@sefacangenc
Forked from endolith/gcd_and_lcm.py
Created June 18, 2020 19:41
Show Gist options
  • Save sefacangenc/585339f9f29fa86a79507933d7c2f7b4 to your computer and use it in GitHub Desktop.
Save sefacangenc/585339f9f29fa86a79507933d7c2f7b4 to your computer and use it in GitHub Desktop.
GCD and LCM functions in Python for several numbers
# Greatest common divisor of 1 or more numbers.
from functools import reduce
def gcd(*numbers):
"""
Return the greatest common divisor of 1 or more integers
Examples
--------
>>> gcd(5)
5
>>> gcd(30, 40)
10
>>> gcd(120, 40, 60)
20
"""
# Am I terrible for doing it this way?
from math import gcd
return reduce(gcd, numbers)
# Least common multiple is not in standard libraries? It's in gmpy, but this
# is simple enough:
def lcm(*numbers):
"""
Return lowest common multiple of 1 or more integers.
Examples
--------
>>> lcm(5)
5
>>> lcm(30, 40)
120
>>> lcm(120, 40, 60)
120
"""
def lcm(a, b):
return (a * b) // gcd(a, b)
return reduce(lcm, numbers, 1)
# Assuming numbers are positive integers...
@sefacangenc
Copy link
Author

wow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment