Smallest Common Multiple
找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。
范围是两个数字构成的数组,两个数字不一定按数字顺序排序。
例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小公倍数。
思路:
(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]);
时间: 2024-10-09 07:30:51