JavaScript的最大公约数/最小公约数

时间:2014-07-28 09:04:46

标签: javascript math

我试图找出计算最小公倍数(LCM)的一些问题。

为了计算GCD(两个或三个数字),我使用两个公式:

gcdTwoNumbers:function(number1,number2){

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

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

}

gcdThreeNumbers:function(number1, number2, number3){

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

}

为了计算LCM我分别为两个或三个数字调用上述函数:

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

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

两个数字的计算是正确的,但我得到错误的结果来计算3个数字。欢迎任何建议/更正。

1 个答案:

答案 0 :(得分:0)

问题在于计算LCM的公式。

应该是:

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

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

所以,gcdThreeNumbers函数没用。