【发布时间】:2015-09-14 06:13:44
【问题描述】:
我在 python 中写了这个来计算给定值下的素数。当我执行代码时它打印“0”。谁能告诉我为什么我的代码出错了?
def is_prime(x):
if x<2:
return False
else:
for value in range(2, x):
if x%value == 0:
return False
else:
return True
def primes_in(x):
primes = [ ]
for value in range(2, x+1):
if is_prime(value):
primes.append(1)
elif not is_prime(value):
primes.append(0)
else:
primes.append(0)
return sum(primes)
print primes_in(25)
【问题讨论】:
-
range(2, x+1)确保x也包含在迭代中。所以,它总是会返回False。 -
pythonic 的方式也是: if is_prime(value): ..... elif not is_prime(value):
-
为什么是两个
else? ...我认为第一个就足够了? -
更改后它会在我的机器上打印
9。 -
顺便说一句,使用列表 (
primes) 作为计数器相当浪费。