We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now

x

# Finding the LCM of given n numbers.

on
Medium Priority
475 Views
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);
}

Comment
Watch Question

## View Solution Only

Commented:
Just create a lcm_n function that recursively calls itself or delegates to lcm.

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)

Commented:
p.s. this sounds suspiciously like homework, thus no code.

Commented:
wouldn't it be

lcm(a1,...,aN) = lcm(a1,lcm(a2,...aN)) ???
Commented:
I think you can optimize GCDs code to be like:
//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;

Not the solution you were looking for? Getting a personalized solution is easy.

##### Thanks for using Experts Exchange.

• View three pieces of content (articles, solutions, posts, and videos)
• Ask the experts questions (counted toward content limit)
• Customize your dashboard and profile