- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过从最大可能因子向后计算来确定一个数的最大质因数。找到因子后,我会使用原始函数中的 PrimeTest3 函数测试它是否为质数。
但是,它没有给出我期望的数字 13195 的答案。当我使用“这通过了测试”语句测试上面显示的代码时,我可以看到它从找到的第一个因素中跳过(2639) 到找到的最后一个因子 (5),奇怪的是,当记录通过 PrimeTest3 传递 i 的结果时,它显示为 false,即使首先通过 if 语句必须为 true。
var largestPrimeFactor3 = function (num) {
function PrimeTest3(a){
if (a<=1 || a%1!=0)
return false;
limit = Math.ceil(Math.pow(a,.5));
if (a%2==0 || a%3==0)
return false;
if (a==2 || a==3)
return true;
for (i=6;i<limit;i+=6){
if (a%(i-1)==0)
return false;
if (a%(i+1)==0)
return false;
}
return true;
}
for(var i = Math.floor(num/2); i>0; i--){
console.log(i);
if(num % i === 0 && PrimeTest3(i)){
console.log('this passed the test:' + PrimeTest3(i));
return true;
}
}
}
console.log(largestPrimeFactor3(13195));
非常感谢任何帮助或澄清。谢谢!!
最佳答案
PrimeTest3
中的 for
循环使用与 largestPrimeFactor3
中的循环相同的变量 i
。您需要使用 var
声明将此变量声明为内部函数的局部变量。
var largestPrimeFactor3 = function (num) {
function PrimeTest3(a){
if (a<=1 || a%1!=0)
return false;
limit = Math.ceil(Math.pow(a,.5));
if (a%2==0 || a%3==0)
return false;
if (a==2 || a==3)
return true;
for (var i=6;i<limit;i+=6){
if (a%(i-1)==0)
return false;
if (a%(i+1)==0)
return false;
}
return true;
}
for(var i = Math.floor(num/2); i>0; i--){
console.log(i);
if(num % i === 0 && PrimeTest3(i)){
console.log('this passed the test:' + PrimeTest3(i));
return true;
}
}
}
console.log(largestPrimeFactor3(13195));
关于javascript - for 循环无意中中断 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927021/
这个问题已经有答案了: Why do I get "AttributeError: NoneType object has no attribute" using Tkinter? Where did
我有一个列表,我想从中删除没有出现在另一个列表中的项目。我试过以下方法: for w in common: for i in range(1,n): if no
我遇到了一些自定义管理页面触发 Django 管理站点而不是显示我的自定义页面的问题。 我的 urls.py 如下: urlpatterns = patterns('', # ... trim
我尝试使用 href 方法下载 CSV 文件,但是将其设置为 href 标记时数据似乎被 chop 。对于 IE,我使用了 msSaveBlob,它似乎工作正常并且所有数据都已正确下载。
我是一名优秀的程序员,十分优秀!