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);
4

1 回答 1

1

一旦你找到了最大的因子,循环将继续运行,运行,运行,直到它达到结束条件 - 何时q是 150212868785。一百五十万亿次迭代需要一段时间。

于 2013-09-08T17:54:53.747 回答