无法让这个循环停止

时间:2015-03-07 20:58:27

标签: python-2.7 loops while-loop

为什么当len(素数)增加到9时这不会停止, 我也试过使用计数器,但这也不起作用。在这种情况下,它会一直运行,直到它检查到素数为100,直到找到前10个素数。

    prime = [2]

    odd_list = [x for x in range(100) if x % 2 != 0 and x > 2]
    count = 0
    while len(prime) < 10:
        for z in odd_list:
            for y in range(2, z):
                if z % y == 0:              # is not prime
                    break
            else:
                prime.append(z)
                count += 1
    print 'count = ', count
    print 'length of prime =', len(prime)
    print prime

1 个答案:

答案 0 :(得分:0)

您需要检查内部循环中的素数数量:

prime = [2]

odd_list = [x for x in range(100) if x % 2 != 0 and x > 2]
count = 0
for z in odd_list:
    for y in range(2, z):
        if z % y == 0:              # is not prime
            break
    else:
        prime.append(z)
        count += 1

    if len(prime) >= 10:
        break
print 'count = ', count
print 'length of prime =', len(prime)
print prime

在外部while循环的每次交互中,您运行整个for循环:

while len(prime) < 10:
    for z in odd_list:
        ...

所以在第一次while迭代之后,所有素数都已经找到,只有这样你才会停止while循环。