**Problem:** Write a C Program to find LCM of n numbers or array of n numbers.

Recommended: LCM of two numbers in C

LCM (**Least Common Multiple**) of any two numbers is the minimum positive integer that is divisible by both the numbers.

**Example:** LCM of 5 and 6 is 30.

Similarly, LCM of n numbers is the minimum positive integer that is divisible by all the n numbers.

**Example:** LCM of 2, 4 and, 8 is 8.

To find LCM of n numbers we will use the concept of GCD.

For any 2 numbers the following relation holds true:

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

But this is not valid for more than 2 numbers i.e.

**LCM != (n1*n2*n3)/GCD**.

Thus to find lcm of the whole array we will have to deal with two numbers at a time and use its result for the succeeding number.

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

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

Overall, we will loop through the array and use **Lcm of the last n-1 numbers * array[n] / GCD of the last n numbers** to find the lcm of the whole array.

Here is the implementation of the above algorithm in C.

```
#include <stdio.h>
int findGCD(int, int);
int main() {
int array[] = {8, 4, 2, 16};
int lcm = array[0];;
int gcd = array[0];
//Loop through the array and find GCD
//use GCD to find the LCM
for(int i=1; i<4; i++){
gcd = findGCD(array[i], lcm);
lcm = (lcm*array[i])/gcd;
}
printf("LCM: %d", lcm);
}
//Function returns GCD of a and b
int findGCD(int a, int b){
if(b==0)
return a;
return findGCD(b, a%b);
}
```

**Output**

`LCM: 16`

In this tutorial, we learned to find LCM of n numbers in C programming language.