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
广告