Source code for algorithms.arithmetic.lcm

"""
The least common multiple, lowest common multiple, or smallest common multiple of two integers a and b,
usually denoted by LCM(a, b), is the smallest positive integer that is divisible by both a and b. [Wikipedia]
"""
from functools import reduce

from algorithms.arithmetic.gcd import gcd


def _lcm(integer_a: int, integer_b: int) -> int:
    """
    Private function for calculating LCM [least common multiple] of 2 integers

    Args:
        integer_a: first integer
        integer_b: second integer

    Returns:
        Least common multiple of 2 positive integers.

    """

    # Move here to have extra check that we have in GCD
    _gcd = gcd(integer_a, integer_b)

    return int(abs(integer_a * integer_b) / _gcd)


[docs]def lcm(*integer_nums: int) -> int: """ Private function for calculating LCM [least common multiple] of N integers Args: *integer_nums: integer arguments Returns: Least common multiple of N positive integers. Examples: >>> lcm(16, 20) 80 >>> lcm(8, 9, 21) 504 """ return int(reduce((lambda i, j: _lcm(i, j)), integer_nums))