If lcm_n is called with only one number, return that number.

If lcm_n is called with more than one number, then have it call itself recursively.

a = lcm_n of the first half of the numbers

b = lcm_n of the second half of the numbers

return lcm(a,b)

Solved

Posted on 2006-03-21

Any one can write the code for finding the LCM of given n numbers.

I have written the code for finding the LCM of 2 numbers, but I need to find the LCM of given n numbers.

int gcd(int a, int b)

{

if (a==0 || b==0) return max(a,b);

if (a > b) return gcd(b, a);

if (!(b % a)) return a;

return gcd(a, b % a);

}

int lcm(int a, int b)

{

return b*a/gcd(a,b);

}

I have written the code for finding the LCM of 2 numbers, but I need to find the LCM of given n numbers.

int gcd(int a, int b)

{

if (a==0 || b==0) return max(a,b);

if (a > b) return gcd(b, a);

if (!(b % a)) return a;

return gcd(a, b % a);

}

int lcm(int a, int b)

{

return b*a/gcd(a,b);

}

4 Comments

If lcm_n is called with only one number, return that number.

If lcm_n is called with more than one number, then have it call itself recursively.

a = lcm_n of the first half of the numbers

b = lcm_n of the second half of the numbers

return lcm(a,b)

//assume that a and b cannot both be 0

int GCD(int a, int b)

{

if (b==0) return a;

return GCD(b,a%b);

}

>>but I need to find the LCM of given n numbers

so, the numbers should be stored in array, right?

then you can do it using for loop :

{

int array[N];

int output = array[0];

for(int i = 1; i<N; i++)

output = lcm(output,array[i]);

}

or you can do it recursively as experts said ..

regards;

Join the community of 500,000 technology professionals and ask your questions.

Connect with top rated Experts

**21** Experts available now in Live!