2011-07-08 5 views
0

私は10までの素数をすべて表示しようとしていますが、動作していません。私は何が間違っているのか分かりますか?JavaScriptで機能しないすべての素数を表示するコードですか?

function findPrimeNumbers() { 
    var count = 10, 
     primes = []; 
    for (var i = 0; i <= count; i++) { 
     if (count/i === 1 || count) primes.push(i); 
     else continue; 
     count -= 1; 
    } 
    for (var i = 0, len = primes.length; i < len; i++) return primes[i]; 
} 

console.log(findPrimeNumbers()); 

コンソールでは0しか返されません。

+0

どのように機能していませんか? – Flimzy

+0

それは0だけを返します。すべての素数が10までです。 – 0x499602D2

答えて

0

for (var i = 0, len = primes.length; i < len; i++) return primes[i];

ここでは、戻り配列のちょうど最初の要素です。私はあなたがこのようなものを意味したと思います。

var retstr = ""; 
for (var i = 0, len = primes.length; i < len; i++) 
{ 
    //To improve str format 
    if(i == len-1) 
     retstr += primes[i]; 
    else 
     retstr += primes[i] + ", "; 
} 

return retstr; 

希望します。

0
if (count/i === 1 || count/i === count) 
+0

申し訳ありませんが、現在は1を返します。それでも動作しません。 – 0x499602D2

0

あなたはそれが動作していないですが、私の注意に来る最初の事は同時に、そうをデクリメントしながら、あなたは、私をインクリメントしていることがいかにを言うことはありません私も10

にすべての方法を得ることはありません、数/ I Javascriptが魔法のように私は「何らかの方法でそのケースを扱う場合を除き、それが(書かれているように、第1の反復でゼロ除算エラーが発生します私は慣れていない)。

戻り値を「ループ」しますが、を1回だけ返すことができます。は関数から返されます。もちろん、最初の値を返すだけです。

0

そして最後のforループの関数から戻ります。 forループを削除し、配列を返すだけです。

+0

今すぐ1と9を返します。 – 0x499602D2

2

ここでは、素数を生成する最も簡単な方法について説明します。より効率的な方法があることに注意してください。しかし、理解することは難しいです。

[2, 3, 5, 7] 


See Wikipedia for an explanation

function findPrimeNumbers (count) { 
    var primes    = []; 

    for (var J = 2; J <= count; J++) { 
     var possPrime  = true; 

     for (var K = 2, factorLim = Math.sqrt (J); K <= factorLim; K++) { 
      if (J % K == 0) { 
       possPrime = false; 
       break; 
      } 
     } 
     if (possPrime) 
      primes.push (J); 
    } 
    return primes; 
} 

console.log (findPrimeNumbers (10)); 


これ

は、すべての素数< = 10が得られます。

関連する問題