**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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #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**

1 | LCM: 16 |

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