## 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)
```