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

Greater Common Divisor/ Least Common Divisor for JavaScript

本文关键字:JavaScript      更新时间:2023-09-26

我正在试图找出计算最小公倍数(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));

两个数字的计算是正确的,但是三个数字的计算结果是错误的。欢迎提出任何建议或更正

问题出在LCM的计算公式上。

应该是:

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

所以,gcdThreeNumbers函数是无用的