Euclidean Algorithm for calculating GCD in JavaScript


在数学中,欧几里得算法是一种计算两个数字的最大公约数(GCD)的方法,最大公约数(GCD)是能同时整除这两个数字而不留下余数的最大数字。

欧几里得算法基于一个原则,即两个数字的最大公约数不变,不管大的数字是否用它与小数字相差的值代替。

例如,21 是 252 和 105 的最大公约数(因为 252 = 21 × 12 且 105 = 21 × 5),同样的数字 21 也是 105 和 252 - 105 = 147 的最大公约数。

由于这个替换减少了两个数字的较大者,重复这个过程会得到一系列越来越小的数字对,直到这两个数字相等。当这两个数字相等时,它们就是这两个原数字的最大公约数。

通过逆向这些步骤,可以将最大公约数表示为两个原数字各乘以一个正数或负数的总和,例如,21 = 5 × 105 + (-2) × 252。

我们要求编写一个 JavaScript 函数,该函数接收两个数字并利用欧几里得算法计算它们的最大公约数(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

更新于: 11-Dec-2020

1K+ 浏览

开启你的职业生涯

通过完成课程获得认证

立即开始
广告