FCC 中級算法題 最小公倍數
阿新 • • 發佈:2017-08-05
www. common objects java function center func .com target
Smallest Common Multiple
找出能被兩個給定參數和它們之間的連續數字整除的最小公倍數。
範圍是兩個數字構成的數組,兩個數字不一定按數字順序排序。
例如對 1 和 3 —— 找出能被 1 和 3 和它們之間所有數字整除的最小公倍數。
Smallest Common Multiple
思路:
(1)找出所給值的最大值和最小值;
(2)給最大值分別乘以1到100000裝入數組maxArr中;
(3)將所給的兩個數值及其中間的數按順序裝入數組newArr中;
(4)將最大值的倍數分別和newArr的各個數值相除,然後比較;
(5)返回第一個能把newArr所有元素整除的最小值;
知識點:
(1)Math.max.apply(null, Array)函數可以找出一組數的最大值;
(2)這個數值可以自由設定,本來想讓他為newArr各個元素相乘的數值,但有時候數值太大,容易引起崩潰;
1 for (var k = 0; k < 100000; k++) { 2 //給最大值乘以1到100000裝入數組maxArr中 3 maxArr.push(max * (k + 1)); 4 }
代碼:
1 function smallestCommons(arr) { 2 var newArr = []; 3 var maxArr = [];4 var num = 1; 5 var max = Math.max.apply(null, arr); 6 var min = Math.min.apply(null, arr); 7 8 9 for (var k = 0; k < 100000; k++) { 10 //給最大值乘以1到100000裝入數組maxArr中 11 maxArr.push(max * (k + 1)); 12 } 13 for (var i = min; i < max + 1; i++) { 14 //將所給的兩個數值及其中間的數按順序裝入數組newArr中15 newArr.push(i); 16 } 17 18 for (var j = 0; j < maxArr.length; j++) { 19 var b = 1; 20 for (var m = 0; m < newArr.length; m++) { 21 //將最大值的倍數分別和newArr的各個數值相除,然後比較 22 if (maxArr[j] % newArr[m] !== 0) { 23 b = 0; 24 } 25 } 26 if (b === 1) { 27 //返回第一個能把newArr所有元素整除的最小值 28 return maxArr[j]; 29 } 30 } 31 } 32 smallestCommons([1, 13]);
FCC 中級算法題 最小公倍數