首页 > 代码库 > js-找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。

js-找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。

存档。

找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。

 1 function smallestCommons(arr) {
 2   //分解质因数法,分解为若干个质数相乘
 3   var arrratio=[];
 4   var l=0;
 5   var min=Math.min(arr[0],arr[1]);
 6   var max=Math.max(arr[0],arr[1]);
 7   for(var i=min+1;i<max;i++){
 8     arr.push(i);
 9   }
10   
11 /*  var prime=[2];
12   for(var j=3;j<=max;j++){
13     var isprime=1;
14     for(var k=2;k<j;k++){
15       if(j%k===0){
16         isprime=-1;
17       }
18     }
19     if(isprime===1){
20       prime.push(j);
21     }
22   }*/
23   
24   var arrtemp=[];
25   for(var j=2;j<=max;j++){
26     arrtemp.push(j);
27   }
28   var prime=arrtemp.filter(function(val){
29     for(var k=2;k<val;k++){
30       if(val%k===0){
31         return false;
32       }
33     }
34     return true;
35   });
36 
37   while(arr.reduce(function(a,b){return a+b;})!==(max-min+1)){
38     for(var m=0;m<prime.length;m++){
39       var isratio=-1;
40       for(var n=0;n<arr.length;n++){
41         if(arr[n]%prime[m]===0){
42           isratio=1;
43           arr[n]=arr[n]/prime[m];
44         }
45       }
46       if(isratio===1){
47         arrratio[l++]=prime[m];
48       }
49     }
50   }
51   
52   return arrratio.reduce(function(a,b){return a*b;});
53   
54 }
55 
56 
57 smallestCommons([12,13]);

 

js-找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。