2012-01-03 28 views
1

pythonでプログラムを操作して、最初の1000個の素数(2を除く)を出力します。私は出力のために得ることができるすべては3番です。私のループがどこで終わるか分からない。プログラミングでは非常に新しい。誰でも助けることができますか?入れ子のwhileループが機能しないのはなぜですか

primeCounter = 1 
candidate = 3 

while primeCounter < 1000: 
    isPrime = True 
    counter = 2 
    while counter < candidate: 
     if candidate%counter == 0: 
      isPrime = False 
     else: 
      counter = counter + 1 

    if isPrime == True: 
     print candidate 
     primeCounter = primeCounter + 1 

    candidate = candidate + 1 
+0

デバッグを試したことはありますか?おそらく、それが条件付きのためにテストされた変数の値などを出力するようにしていますか? –

答えて

3
primeCounter = 1 
candidate = 3 

while primeCounter < 1000: 
    isPrime = True 
    counter = 2 
    while counter < candidate: 
     if candidate%counter == 0: 
      isPrime = False 
      break # <<<<<<<<<<<<<<<<< break here, or the loop will go infinite 
     else: 
      counter = counter + 1 

    if isPrime == True: 
     print candidate 
     primeCounter = primeCounter + 1 

    candidate = candidate + 1 
+0

は完全に機能します。これもやって – patch321

2

あなたはFalseisPrimeを設定したら、もう一度counterをインクリメントしたことがないので、あなたは、内側のwhileループから抜け出すことはありません。

+0

ありがとうございます。ありがとうございました – patch321

0

あなたの問題ブロックで

while counter < candidate: 
    if candidate%counter == 0: 
     isPrime = False 

候補%カウンターでない場合は、無限ループを取得します。

関連する問題