GCD超过2个数字

Том*_*мов 0 javascript math

function gcd (a, b) {
    if(b == 0){
        return a;
    }
    return gcd(b, a%b);
}

function gcd_more_than_two_numbers (a) {
    var last = Math.max.apply(null, a);
    var first = Math.min.apply(null, a);    

    return gcd(first, last);
}

console.log(gcd_more_than_two_numbers([9999,213123,9,15,27])); 
console.log(gcd_more_than_two_numbers([5,10,15,25]));
Run Code Online (Sandbox Code Playgroud)

取数组中的最低和最高值并为它们之间的所有数字找到一个gcd是否正确?数学上正确吗?

mai*_*man 5

取数组中的最低和最高值并为它们之间的所有数字找到一个gcd是否正确?数学上正确吗?

NO


您需要获取第一对的gcd,然后针对数组的所有其他元素重新计算,您可以使用reduce以下命令轻松完成此操作:

function gcd (a, b) {
    if(b == 0){
        return a;
    }
    return gcd(b, a%b);
}
function gcd_more_than_two_numbers (a) {
  return a.reduce(gcd)
}

console.log(gcd_more_than_two_numbers([9999,213123,9,15,27]))
Run Code Online (Sandbox Code Playgroud)