
递归
const gcd = (a, b) => b === 0 ? a : gcd(b, a % b)迭代
const gcd = (a, b) => {
while (b) {
const t = a
a = b
b = t % b
}
return a
}递归
const gcd = (a, b) => a === b ? a : a > b ? gcd(a - b, b) : gcd(a, b - a)迭代
const gcd = (a, b) => {
while (a !== b) a > b ? a -= b : b -= a
return a
}const lcm = (a, b) => a * b / gcd(a, b) 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。
求最大公约数的gcd函数可以用上面的方法来实现
var findGCD = function(nums) {
const n = nums.length
let min = 1001, max = 0
for (let i = 0; i < n; i++) {
if (min > nums[i]) min = nums[i]
if (max < nums[i]) max = nums[i]
}
return gcd(min, max)
};
const gcd = (a, b) => {
while (a !== b) a > b ? a -= b : b -= a
return a
}