## 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:

 ``````1 2 3 4 5 6 7 8 9 `````` ``````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:

 ``````1 2 3 `````` ``````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:

 `````` 1 2 3 4 5 6 7 8 9 10 `````` ``````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

 ``````1 2 3 4 5 6 7 `````` ``````@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) ``````