题目
找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。
范围是两个数字构成的数组,两个数字不一定按数字顺序排序。
例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小公倍数。
要求
smallestCommons([1, 5]) 应该返回一个数字。
smallestCommons([1, 5]) 应该返回 60。
smallestCommons([5, 1]) 应该返回 60。
smallestCommons([1, 13]) 应该返回 360360。
代码
//先求arr[n]与arr[n+1]的最小公倍数,再求其与arr[n+2]的最小公倍数....以此类推
function smallestCommons(arr) {
var a = Math.min(arr[0],arr[1]);
var b = Math.max(arr[0],arr[1]);
var s_commons = a;
while(a < b) {
a++;
s_commons = commonMultiple(s_commons,a);
}
return s_commons;
}
//辗转相除法求最小公倍数
function commonMultiple(a,b){
var temp;
var min = a;
var max = b;
while(b !== 0) {
temp = a % b ;
a = b;
b = temp;
}
var result = min*max/a ;
return result;
}
smallestCommons([1,10]);