[英]Free code camp algorithm
我一直被這個免費的代碼訓練算法所困,確實需要一些幫助。
這是我應該做的:
找到所提供參數的最小公倍數,它們可以被這兩個參數以及這些參數之間范圍內的所有序號均分。
范圍將是兩個數字的數組,不一定按數字順序。
例如,對於1和3-找到1和3的最小公倍數,該公倍數可以被1和3之間的所有數字均等。
我必須檢查天氣,我的arr中的每個值都可以被我的公倍數整除,並且確實無法實現。
這是我到目前為止所擁有的:
function smallestCommons(arr) {
arr = arr.sort();
var number = arr[0];
var secArr = [];
// create a new list with all values to check against.
while (number >= arr[0] && number <= arr[1]) {
secArr.push(number);
number++;
}
var commonMultiple = 1;
var isTrue = true;
function isDivisible(item) {
if (item % commonMultiple === 0) {
return true;
}
else {
return false;
}
}
while (isTrue) {
commonMultiple++;
if (secArr.every(isDivisible)) {
isTrue = false;
}
}
return commonMultiple;
}
smallestCommons([5,1]);
我試圖用Euclid的算法解決這個問題,並認為這很困難,嘗試使用for循環,但不能,我目前正在嘗試使用.every
進行檢查,但是它說我有一個無限循環。
所以這是我的解決方案,希望您能從中找到啟發:
function smallestCommons(arr) {
var min = Math.min(arr[0], arr[1]);
var max = Math.max(arr[0], arr[1]);
var smallestCommon = min * max;
var doneCalc = 0;
while (doneCalc === 0) {
for (var i = min; i <= max; i++) {
if (smallestCommon % i !== 0) {
smallestCommon += max;
doneCalc = 0;
break;
}
else {
doneCalc = 1;
}
}
}
return smallestCommon;
}
function smallestCommons(arr) { arr.sort((a,b)=>ab); var sm = arr[0]; var lg = arr[1]; var j = 0; var mul; var checkNumber = function(num) { for(var i = sm; i <= lg; i++) { if(num%i !== 0) return false; } return true; }; do{ j++; mul = sm * lg * j; } while(checkNumber(mul) !== true); return mul; } console.log(smallestCommons([1,5]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.