0

私は Euler プロジェクトで 3 番目の課題を試していましたが、このコードを書いて解決しようとしました。アイデアは、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) に達するまで実行を繰り返します。150 兆回の反復には時間がかかります。

于 2013-09-08T17:54:53.747 に答える