Euler Challenge 3 Javascript:解决方案给出了正确答案,但随后我陷入了无限循环

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) {

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