2
n=5;count=2;i=3;j=2;
while (count <= n):
    for j in range (2,i):
            if(i%j == 0):           
                break
    if(j==i):
        print i
        count = count +1
    i = i+1

最初の n 個の素数を見つけようとしていますが、どういうわけかこのコードはコンパイルできないようです。プログラムがfor ループでスタックしています。同じロジックを使用してCでコードを書いてみましたが、うまくいくようですが、多数のサポートが必要なため、pythonは明らかな選択であるように思われるため、pythonで実行したいと考えていました。どんな助けでも素晴らしいでしょう。

4

4 に答える 4

6

range(a, b)からaまでb-1です。

n=5;count=2;i=3;j=2;
while (count <= n):
    for j in range (2,i):
        if(i%j == 0):           
            break
    if(j==i-1):
        print i
        count = count +1
    i = i+1

私はあなたが持っていたに違いない

 int j;
 for(j = 2; j < i; j++) {
 }

したがって、素数のループの終わりまでに、 にjなりますi

を使用する場合、Python は制限を超えませんrange

于 2013-11-14T16:02:34.607 に答える
1

else:これは、ループに続くキーワードのあいまいな構文の適切な使用法です。for他の人がコメントしているように、ループが正常に完了するためのテストは1つずれています。

代わりに、else正常に完了したかどうかをテストするために使用してみてください。

for j in range (2,i):
        if(i%j == 0):
            break
else:
    print i
    count = count +1
于 2013-11-14T16:12:06.333 に答える
0

あなたの問題はここにあります:

for j in range (2,i):

これは、j=2,3,4....i-1 をチェックします。したがって、ここのコードは決して実行されません:

if(j==i):
        print i
        count = count +1

したがって、カウントは決して変化しません。したがって、無限 while ループが発生します。チェックを次のように変更します

if(j==i-1):
        print i
        count = count +1
于 2013-11-14T16:04:27.783 に答える
0

Python 3 では、print()ではなくprintです。この行を変更すると、コードがコンパイルされます。

        print(i)

無限ループもしているようですが、デバッグさせていただきます。

于 2013-11-14T16:06:37.870 に答える