我正在尝试编写一个程序来挑选3到9范围内的素数。这是我的代码:
primes_list = []
number = 3
while number > 2 and number < 10:
for n in range(2, number):
if number % n == 0:
break
number += 1
else:
primes_list.append(number)
print primes_list
这似乎是一个无限循环,但这只是猜测,因为输出永远不会出现。如果是无限循环,为什么?
此外,我想知道是否有某种列表理解可以只挑选素数?也许列表理解是更有效的方法?只有我还没弄清楚如何过滤素数。
非常感谢任何帮助或评论。
答案 0 :(得分:6)
while number > 2 and number < 10:
for n in range(2, number):
if number % n == 0:
break
else:
primes_list.append(number)
number += 1
>>> primes_list
[3, 5, 7]
>>>
这可能是你想到的。
请注意,第一个循环内的数字+ = 1是错位的
答案 1 :(得分:1)
for n in range(2, number):
if number % n == 0:
break
number += 1
由于休息,你永远不会到达
number += 1
满足条件时。它将永远将数字附加到列表中。
尝试以下方面的内容:
primes_list = []
lower = 3
upper = 10
for number in range(lower, upper):
if(isPrime(number)):
primes_list.append(number)
print primes_list
#note this is not an efficient implementation
def isPrime(number):
for n in range(2, number):
if number % n == 0:
return false
return true