The problem today is about calculating the least common multiple of a set of numbers. In mathematics, the least common multiple of two positive integers `a`

and `b`

, denoted by `LCM(a,b)`

, is the smallest natural number that is divisible by both `a`

and `b`

. But let’s start with the definition of the problem:

### The Problem: Least Common Multiple

link to the kata

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`

. If any argument is `0`

, return `0`

.

### The Solution

To solve the problem, I can follow the instructions on Wikipedia:

It is essentially a matter of using the greatest common divisor. But how do you calculate the greatest common divisor? I talked about it a few days ago in another post:

```
const gcd = (x, y) => (y === 0 ? x : gcd(y, x % y));
```

Therefore, the problem of calculating the least common multiple in JavaScript can be solved in just two lines:

```
const gcd = (x, y) => (y === 0 ? x : gcd(y, x % y));
const lcm = (...n) => n.reduce((x, y) => (x * y) / gcd(x, y));
```