我很震惊,需要帮助.. 我想从给定的整数列表中找到素数的总和。这里有一些相同的测试用例。
n([3,3,1,13])
19
n([2,4,6,9,11])
13
n([-3,0,1,6])
0
我写的代码如下,但是上面的测试用例失败了..
def sumprimes(n):
sum1 = 0
for i in range(0,len(n)):
num = n[i]
if num > 1:
for j in range(2, int(num**0.5)+1):
if num%j != 0:
sum1 = sum1 + num
else:
sum1 = 0
return(sum1)
请您参考如下方法:
这部分是错误的:
for j in range(2, int(num**0.5)+1):
if num%j != 0:
sum1 = sum1 + num
您正在为范围内未相除的每个数字求和 num。 如果所有它们不相除,您应该求和。
简单的方法是:
prime = True
for j in range(2, int(num**0.5)+1):
if num%j == 0:
prime = False
break
if prime:
sum1 = sum1 + num
或者以更 pythonic 的方式使用 all():
if all(num%j != 0 for j in range(2, int(num**0.5)+1)):
sum1 = sum1 + num
