在JavaScript中计算GCD的欧几里得算法

在数学中,欧几里得算法是一种用于计算两个数的最大公约数(GCD)的方法,该最大公约数将两个数相除而没有余数。

欧几里得算法基于这样的原理:如果将较大的数字替换为较小的数字,则两个数字的最大公约数不变。

例如,21是252和105的GCD(因为252 = 21×12和105 = 21×5),相同的数字21也是105和252-105 = 147的GCD。

由于此替换减少了两个数字中的较大者,因此重复此过程将得出较小的数字对,直到两个数字相等为止。发生这种情况时,它们就是原始两个数字的GCD。

通过反转步骤,可以将GCD表示为两个原始数字的总和,每个原始数字乘以一个正负整数,例如21 = 5×105 +(-2)×252。

我们需要编写一个包含两个数字的JavaScript函数,并利用Euclid算法计算其GCD(最大公约数)

示例

以下是代码-

const num1 = 252;
const num2 = 105;
const findGCD = (num1, num2) => {
   let a = Math.abs(num1);
   let b = Math.abs(num2);
   while (a && b && a !== b) {
      if(a > b){
         [a, b] = [a - b, b];
      }else{
         [a, b] = [a, b - a];
      };
   };
   return a || b;
};
console.log(findGCD(num1, num2));

输出结果

以下是控制台上的输出-

21