在数学中,欧几里得算法是一种用于计算两个数的最大公约数(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