codecamp

最小公倍数算法挑战

方法一:

function smallestCommons(arr) {
  var res=make_arr(arr).reduce(function(a,b){  //利用reduce,两两求最小公倍数
    return gcd(a,b);
  });
  return res;
}


function make_arr(arr){ //返回包含给定参数和他们之间连续数字的顺序数组
  arr.sort(function(a,b){
    return a-b;
  });
  var max=arr.pop();
  var num=arr[0];
  while( num<max ){
    num++;
    arr.push(num);
  }
  return arr;

  
}


function gcd(a,b){  //遍历,获得a,b的最小公倍数
  var max=Math.max(a,b),
      min=Math.min(a,b),
      count;

  
  for(var i=1;i<=max;i++){
    count=min*i;
    if(count%max===0){
      return count;
    }
  }

  
}


smallestCommons([1,5]);

方法二:

function smallestCommons(arr) {
        var len = arr.length,
            max = Math.max(arr[0], arr[len - 1]),
            min = Math.min(arr[0], arr[len - 1]),
            cmMaxValue = 1,
            cm = max,
            nowValue = max,
            j = 1,
            isSCM = true,
            r = 0;
        for (var i = min; i <= max; i++) {
            cmMaxValue *= i;
        }
        while (cm <= cmMaxValue) {
            for (var n = min; n < max; n++) {
                if (cm % n !== 0) {
                    isSCM = false;
                    break;
                }
            }
            if (isSCM) {
                r = cm;
                break;
            }
            j++;
            cm = j * max;
            isSCM = true;
        }
        return r;
    }




smallestCommons([1,5]);
质素求和算法挑战
数组验证算法挑战
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定