The challenge

Write a function that calculates the least common multiple of its arguments; each argument is assumed to be a non-negative integer. In the case that there are no arguments (or the provided array in compiled languages is empty), return 1.

The solution in Python code

Option 1:

from math import gcd
def lcm(*args):
    lcm=1
    for x in args:
        if x!=0:
            lcm=lcm*x//gcd(lcm,x)
        else:
            lcm=0
    return lcm

Option 2:

def lcm(*args):
    gcd = lambda m,n: m if not n else gcd(n,m%n)
    return reduce( lambda x, y: x*y/gcd(x, y), args)

Option 3:

def lcm(*args):
    args = set(args)  
    if 0 in args:
        return 0
    x = max(args)
    y = x
    args.remove(x)
    while any(x % z for z in args):
        x += y
    return x

Test cases to validate our solution

@test.describe('Example Tests')
def example_tests():
    test.assert_equals(lcm(2,5),10)
    test.assert_equals(lcm(2,3,4),12)
    test.assert_equals(lcm(9),9)
    test.assert_equals(lcm(0),0)
    test.assert_equals(lcm(0,1),0)