我很震惊,需要帮助.我想从给定的整数列表中找到素数的总和.以下是一些相同的测试用例.
n([3,3,1,13])
19
n([2,4,6,9,11])
13
n([-3,0,1,6])
0
Run Code Online (Sandbox Code Playgroud)
我写的代码如下,但是上面的测试用例失败了.
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)
Run Code Online (Sandbox Code Playgroud)
这部分是错的:
for j in range(2, int(num**0.5)+1):
if num%j != 0:
sum1 = sum1 + num
Run Code Online (Sandbox Code Playgroud)
你是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
Run Code Online (Sandbox Code Playgroud)
或者以更加pythonic的方式使用all():
if all(num%j != 0 for j in range(2, int(num**0.5)+1)):
sum1 = sum1 + num
Run Code Online (Sandbox Code Playgroud)