欧拉挑战3 Javascript:解决方案给出正确答案 但随后我陷入了无限循环

Euler Challenge 3 Javascript: Solution Gives Correct Answer but then I get stuck in an infinite loop

本文关键字:答案 无限循环 挑战 Javascript 解决方案      更新时间:2023-09-26

我正在尝试欧拉项目中的第三个挑战,我写了这段代码来尝试解决它。这个想法是找到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);

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