1

I'm trying to figure out some issues for calculating the Least Common Multiple (LCM).

In order to calculate GCD (for two or three numbers) I'm using two formulas:

gcdTwoNumbers:function(number1,number2){

    if(number2 == 0){
        return number1;
    }

    return this.gcdTwoNumbers(number2, number1 % number2);

}

and

gcdThreeNumbers:function(number1, number2, number3){

  return this.gcdTwoNumbers(number1, this.gcdTwoNumbers(number2,number3));

}

in order to calculate the LCM I'm calling the above functions for two or three numbers respectively:

      var lcm = randomNumber1 * randomNumber2  / (gcdTwoNumbers(randomNumber1,randomNumber2));

and

      var lcm = randomNumber1 * randomNumber2 * randomNumber3 / (gcdThreeNumbers(randomNumber1,randomNumber2,randomNumber3));

Calculations for two numbers is correct, but I get wrong results for the calculation of 3 numbers. Any suggestions/corrections are welcome.

  • Hope this may be useful. [GDC and LCM][1] [1]: http://stackoverflow.com/questions/4201860/how-to-find-gcf-lcm-on-a-set-of-numbers [2]: http://stackoverflow.com/questions/5611751/gcd-and-lcm-relation – Suganth G Jul 28 '14 at 09:11
  • You could at least show the inputs and outputs for which the methods are failing. Realize that of course the more numbers you multiply the more likely you will encounter integer overflow. If your numbers get too large to be exactly representable the math breaks down. – President James K. Polk Jul 28 '14 at 22:47

1 Answers1

0

The problem was on the formula of calculating the LCM.

It should be:

      var tmp = randomNumber1 * randomNumber2 / (gcdTwoNumbers(randomNumber1, randomNumber2));

      var lcm = tmp*randomNumber3 / gcdTwoNumbers(tmp,randomNumber3);

And so, gcdThreeNumbers function is useless.