免费代码阵营算法
Posted
技术标签:
【中文标题】免费代码阵营算法【英文标题】:Free code camp algorithm 【发布时间】:2016-10-31 11:46:11 【问题描述】:我一直卡在这个免费的代码营地算法中,真的需要一些帮助。
这是我应该做的:
找到所提供参数的最小公倍数,该公倍数可以被两者以及这些参数之间范围内的所有序号均分。
范围将是一个由两个数字组成的数组,不一定按数字顺序。
例如对于 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
进行检查,但它说我有一个无限循环。
【问题讨论】:
我认为是重复的:***.com/questions/31302054/… 【参考方案1】:所以这是我的解决方案,我希望你觉得它很有启发性:
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;
【讨论】:
【参考方案2】:function smallestCommons(arr)
arr.sort((a,b)=>a-b);
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]));
【讨论】:
请添加您的代码解决 OP 问题的原因。如果用户不知道他做错了什么或者你的答案为什么解决了他的问题,那么仅仅让代码正常工作并不总是足够的。请看how to answer以上是关于免费代码阵营算法的主要内容,如果未能解决你的问题,请参考以下文章