我正在尝试 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)
{
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);