Euler Challenge 3 Javascript:解决方案给出了正确答案,但随后我陷入了无限循环
我正在尝试Euler项目中的第三个挑战,我编写了这段代码来尝试解决它。我的想法是找到最高的素因子600851475143。从Winscript弹出几个窗口后,我得到了正确的答案,但随后我的cpu跳到了25%,我从Winscript中没有得到任何其他东西,这让我相信有什么东西导致它进入无限循环。有人能看出问题出在哪里吗Euler Challenge 3 Javascript:解决方案给出了正确答案,但随后我陷入了无限循环,javascript,Javascript,我正在尝试Euler项目中的第三个挑战,我编写了这段代码来尝试解决它。我的想法是找到最高的素因子600851475143。从Winscript弹出几个窗口后,我得到了正确的答案,但随后我的cpu跳到了25%,我从Winscript中没有得到任何其他东西,这让我相信有什么东西导致它进入无限循环。有人能看出问题出在哪里吗 var isprime = function(n) { var s= Math.sqrt(n); for(i=2;i<=s;i++) { if(n%i===0) {
var isprime = function(n)
{
var s= Math.sqrt(n);
for(i=2;i<=s;i++)
{
if(n%i===0)
{
return false;
}
}
return true;
};
var largest = 0;
var q=0;
while(q<(600851475143/4))
{
if(600851475143%q===0)
{
if(q>largest)
{
if(isprime(q))
{
largest=q;
WScript.Echo(largest);
}
}
var d = 600851475143/q;
if(d>largest)
{
if(isprime(d))
{
largest = d;
WScript.Echo(largest);
}
}
}
q+=1;
}
WScript.Echo(largest);
var isprime=函数(n)
{
var s=数学sqrt(n);
对于(i=2;i最大)
{
if(isprime(d))
{
最大=d;
Echo(最大);
}
}
}
q+=1;
}
Echo(最大);
找到最大因子后,循环将继续运行、运行、运行,直到达到结束条件-当q
为150212868785时。150万亿次迭代需要一段时间。啊,就是这样。将结束条件设置为Math.sqrt(600851475143)将时间缩短到0.75秒。