**Problem:** Write a Java program to find the lcm of an array (i.e. lcm of more than 2 numbers).

**Example:**

Input: [8, 2, 4, 16] Output: 16 Input: [21, 7, 6] Output: 42

To find the lcm of an array we will use GCD because, for any two numbers, the following relationship holds true:

**LCM(n1, n2)= (n1*n2)/GCD(n1, n2)**

But this is not valid for more than 2 numbers:

**LCM(n1, n2, n3)= (n1*n2*n3)/GCD(n1, n2, n3)**

Thus to find lcm of the whole array (more than 2 numbers), we will deal with two numbers at a time and use its result for the next number.

We will loop through the array and use ** Lcm of previous two numbers * array[n] / GCD** as follows:

```
import java.util.*;
class Main {
public static void main(String[] args) {
int array[] = {8, 4, 2, 16};
//initialize LCM and GCD with the first element
int lcm = array[0];
int gcd = array[0];
//loop through the array to find GCD
//use GCD to find the LCM
for(int i=1; i<array.length; i++){
gcd = findGCD(array[i], lcm);
lcm = (lcm*array[i])/gcd;
}
//output the LCM
System.out.println("LCM: "+lcm);
}
//recursive function to find GCD of two numbers
public static int findGCD(int a, int b){
//base condition
if(b == 0)
return a;
return findGCD(b, a%b);
}
}
```

**Output:**

`LCM: 16`

**Explanation:**

Suppose LCM of the first two numbers of the array (i.e, array[0] and array[1]) is **lcm1**, for next iteration we find the LCM of lcm1 and array[2] as **lcm2**, then for the 3rd iteration, LCM of lcm2 and array[3] as lcm3 and so on.

The last LCM value (i.e. LCM of lcm(n-1) and array[n]) gives the LCM of the whole array.