无法让这个循环停止
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
循环。
为什么当 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
循环。