0

このコードでいくつかの間違った答えを得ています。たとえば、9 は素数として表示されます。私の問題はブレークの使用にあると思いますが、誰かが私に尋ねたこの単純なコードの何が問題なのかを論理的に理解できないようです。

for number in range(0, 1000):

    for x in range(2, number):
         if (number % x == 0):
             break
         else:
             print x
             break
4

4 に答える 4

1

ここにいくつかの代替手段があります。

n は、検索する範囲までの数値です

n=100
for i in range(0,n):
    num = filter(lambda y :i % y == 0,(y for y in range(2,(i/2))))
    if num or i == 4:
        print "%s not a prime number" %(i)
    else:
        print "%s is a prime number" %(i)
于 2013-09-06T05:12:27.370 に答える
1

ここにいくつかの代替手段があります。まず、これは素数をチェックします。

def check_for_prime(n):
if n == 1: return False
elif n == 2: return True
elif n%2 == 0: return False

# Elementary prime test borrowed from oeis.org/A000040.
odds = 3
while odds < n**.5+1:
    if n%odds == 0: return False
    odds += 2
return True

これはわずかに高速ですが、yield の使用経験が必要です。

def primes_plus():
yield 2
yield 3
i = 5
while True:
    yield i
    if i % 6 == 1:
        i += 2
    i += 2
于 2013-09-05T04:20:49.263 に答える