1. 兩個數的最大公因數
// 求兩個數的最大公約數 輾轉相除法
// 最壞的結果 兩個數的最大公約數是1
function gcd (a, b) {
if (b === 0) {
return a
} else {
return arguments.callee(b, a%b) // 餘數
}
}
輾轉相除法原理:https://blog.csdn.net/weixin_43886797/article/details/85569998
2. 多個數的最大公因數
先求前兩個數的最大公因數,再把前兩項替換成兩個數的最大公因數,接着和第三項求,以此類推
// 求兩個數的最大公約數 輾轉相除法
// 最壞的結果 兩個數的最大公約數是1
function gcd (a, b) {
if (b === 0) {
return a
} else {
return arguments.callee(b, a%b) // 餘數
}
}
function moreGcd (arr) {
// 循環結束 數組只剩一個元素
while (arr.length > 1) {
var TwoNumberGcd = gcd(arr[0], arr[1]) // 前兩個數的最大公因數
arr.splice(0, 2, TwoNumberGcd) // 替換
}
// 返回這一個元素
return arr[0]
}
3. 兩個數的最小公倍數:
兩個數的乘積除以最大公因數
function maxTimes (a, b) {
return a * b / gcd(a, b);
}
4. 多個數的最大公倍數:
前兩個的乘積/ 最大公約數 , 結果替換前兩個 以此類推。。。