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. 多个数的最大公倍数:
前两个的乘积/ 最大公约数 , 结果替换前两个 以此类推。。。