存档。
找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。
function smallestCommons(arr) { //分解质因数法,分解为若干个质数相乘 var arrratio=[]; var min=Math.min(arr[0],arr[1]); var max=Math.max(arr[0],arr[1]); for(var i=min+1;i<max;i++){ arr.push(i); } //找出小于max的所有质数 var arrtemp=[]; for(var j=2;j<=max;j++){ arrtemp.push(j); } var prime=arrtemp.filter(function(val){ for(var k=2;k<val;k++){ if(val%k===0){ return false; } } return true; }); //用这一排数分别除以从小到大的质数,如果某个数能除尽,则把那个数变为除后的数,把这个质数放在arrratio数组里备用。直至arr里每个数都变成1。这个方法是分解质因数法,详情见小学或初中课本。 while(arr.reduce(function(a,b){return a+b;})!==(max-min+1)){ for(var m=0;m<prime.length;m++){ var isratio=0; for(var n=0;n<arr.length;n++){ if(arr[n]%prime[m]===0){ isratio=1; arr[n]=arr[n]/prime[m]; } } if(isratio){ arrratio[arrratio.length]=prime[m]; } } } //最后把arrratio数组里的数相乘便是这一组数的最小公倍数。 return arrratio.reduce(function(a,b){return a*b;}); } smallestCommons([1,13]);
1到13的数的最小公倍数