无法让这个循环停止

Cannot get this loop to stop

为什么当 len(prime) 递增到 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

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

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 循环。