简体   繁体   中英

Javascript: Use reduce() method to find the LCM in an array

I am trying to find the LCM(least common multiples) among several numbers in an array. To get a LCM between each two numbers in the array, I use the reduce() method which is not working.Please tell me what's wrong? Thanks.

function gcd(a,b){
  //gcd: greatest common divisor
  //use euclidean algorithm
  var temp = 0;
  while(a !== 0){
    temp = a;
    a = b % a;
    b = temp; 
  }
  return b;
}

function lcm(a,b){
  //least common multiple between two numbers
  return (a * b / gcd(a,b));
}

function smallestCommons(arr) {
  //this function is not working, why?
  arr.reduce(function(a, b){
    return lcm(a, b);
  });

}

smallestCommons([1,2,3,4,5]);
//------>undefined

Your smallestCommons function is missing a return . undefined is the default return value for all functions that don't have an explicit return .

function smallestCommons(arr) {
  return arr.reduce(lcm);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM