-3

これを実行した後、何も出力されません。

for n in range(2,100):
     for x in range(2,n):
        if n%x == 0:
         break
        else:
          if n==x:
           print n,'is a prime number'
4

2 に答える 2

4

if n==x内側のループはxfrom から2の値に対してのみ実行されるため、真になることはありませんn-1

内側のループが完了するまで実行されたことを確認する必要がある場合は、それ自体elseの後に使用しforます。これは、実行されていないelse場合に実行されます。break

for n in range(2,100):
    for x in range(2,n):
        if n%x == 0:
             break
    else:
        print n,'is a prime number'

これを行うためのより Pythonic な方法はall、ジェネレーター式を使用することです。

for n in range(2,100):
    if all(n%x != 0 for x in range(2,n)):
        print n,'is a prime number'
于 2013-01-02T12:50:47.617 に答える
1

単純なロジックはこれを指示します-残りが0のものはすべてループから抜け出し、モジュロ自体が になる0ため、含まれてelseいるブロックが実行される場所にブロックに到達することはありませんif

于 2013-01-02T12:49:11.203 に答える