程序设计-求最大公因数
本文使用欧几里得算法来求最大公因数。
最大公因数:能够同时整除两个整数的最大整数。
即,15和35的最大公因数为5。因为15 = 3 x 5 35 = 7 x 5 = 35 它们能够同时被5整除
欧几里得算法:又称辗转相除法,通过对两数连续应用带余除数,每一步的除数和被除数都是上一步的除数和余数而来。运算知道余数为0停止。 最大公因数为最后一个非0余数
例:使用欧几里得算法求(36, 81)得最大公因数
81 = 2 * 36 + 9 (9, 36)
36 = 4 * 9 + 0 (0, 9)
此时余数为0 除数为9 则(36,81)得最大公因数为9.
程序设计
1⃣️ 计算余数和除数
大数除小数得余 去放到下一层计算
if (a > b) {
return gcd(a % b, b);
} else {
return gcd(b % a, a);
}
2⃣️ 确定终止条件
其中一个为0,则返回另一个 此数则为最大公因数
if (a == 0) return b
if (b == 0) return a
代码实现
/**
* @method gcd 求最大公因数
* @params { number } 整数a
* @params { number } 整数b
* @return { number } 最大公因数
**/
let gcd = (a, b) => {
if (a == 0) return b
if (b == 0) return a
if (a > b) {
return gcd(a % b, b);
} else {
return gcd(b % a, a);
}
}
console.log(gcd(102, 999)) // 3
网友评论