为什么这个主要因素不起作用
Why isn't this prime factors thing working?
function prime(number) {
var primeNumbers = [];
var numberDivide = 2;
for(var i=0; i<number; i++) {
var nice = number/numberDivide;
if(Math.floor(nice) == nice) {
number = nice;
primeNumbers.push(numberDivide);
} else {
numberDivide++
}
console.log(primeNumbers)
}
}
这是我的代码。它没有记录最终的素数,我不知道为什么。我通过并大声说出来,但它不起作用......
首先是使用整数的代码转换,以查看函数在做什么:
function prime(number) {
var primeNumbers = [];
for(var divisor =2; divisor <= number;){
if( number % divisor == 0){
primeNumbers.push(divisor);
number = number/divisor;
continue;
}
++divisor;
}
return primeNumbers;
}
console.log( prime(18)); // returns [2,3,3]
在这里,number
被替换为将其除以素因数的商,以查看是否可以在已经确定的素因数之外找到其他素因数。请注意,number
会越来越小,并且当发现dividend
是一个因子时,它不会递增,因此下一个循环可以测试它是否是一个多因子。
那么循环迭代了多少次呢?此版本不计算它们,但是当循环计数器(未以其他方式使用(大于或等于number
时,发布的版本将停止迭代,正如所讨论的那样,循环计数器会变得越来越小。
发布的函数在prime(18)
失败并返回 [2,3] 而不是 [2,3,3]。如果允许它再迭代一次,它会产生正确的结果。我还没有研究过预先计算循环的次数,但是在发布的代码中查找何时退出循环的方法是问题的原因。
相关文章:
- Js.erb VS按钮标记-不'不起作用.为什么?
- 我的jquery代码不起作用.为什么?
- 代码在firefox中运行良好,但在chrome中不起作用.为什么?
- 谷歌地图 JS API v3:使用 containsLocation() 获取圆圈标记不起作用 - 为什么
- 为函数中的现有数组(全局变量)分配新值不起作用.为什么
- Firefox Addon Builder首选项-服务对我不起作用--为什么
- 将D3函数封装在对象内部;不起作用.为什么?
- 敲除绑定处理程序不起作用:为什么
- I'我试图让jquery在我的chrome扩展的background.js中工作,结果成功了;不起作用.为什么?
- blueimp 文件上传插件中的 max文件大小和接受文件类型不起作用.为什么
- 我有两个具有相同代码的不同域,但其中一个不起作用.为什么
- 简单的HTML/CSS选项卡导航在Safari 9中不起作用.为什么
- Jquery focus()和blur()对我的href不起作用.为什么
- 承诺链不起作用.为什么
- 返回页首滚动jquery在chrome中不起作用.为什么?它在firefox中运行良好
- 为什么是宽度100%的html代码全栏不工作,当我写.忘了那个吧,连复制粘贴都不起作用.为什么
- 使用for循环在数组中查找字符串是有效的,但是这里的forEach()不起作用.为什么以及如何纠正
- 附加html上的preventDefault()不起作用.为什么?
- jQuery元素上的加号或减号不起作用.为什么?
- jquery的正则表达式选择器不起作用.为什么