求兩個數最小公倍數的辦法:兩數相乘除以最大公因數。
方法:
- 先求出前兩個數的最小公倍數
- 用上一步的最小公倍數和新的數求最小公倍數
題目:
找出能被兩個給定參數和它們之間的連續數字整除的最小公倍數。
范圍是兩個數字構成的數組,兩個數字不一定按數字順序排序。
題目來源:freecodecamp
1 function smallestCommons(arr) { 2 var min=Math.min(arr[0],arr[1]);//確定大小順序 3 var max=Math.max(arr[0],arr[1]); 4 var result=Common(min,min+1);//初始result 5 min+=2; 6 for(;min<=max;++min) 7 8 { 9 result=Common(result,min); 10 } 11 return result; 12 } 13 14 function Common(m,n) 15 { 16 var arr=[],i; 17 var r=m*n; 18 if(m%n==0) return m;//如果本來就是倍數關系,直接返回大數 19 for(i=2;i<=m;++i) 20 { 21 if(m%i==0) arr.push(i);//求大數的所有因數 22 } 23 for(i=n;i>=2;--i)//從最大因數向下檢索是否存在另一個數的因數 24 { 25 if(n%i==0&&arr.indexOf(i)!=-1) 26 return m*n/i;//存在直接返回兩數之積除以最大公因數 27 28 29 } 30 31 return r;//若兩數相質,直接返回兩數乘積 32 33 } 34 35 smallestCommons([1,13]);