如何从Python中的整数列表计算素数之和?

1 python python-3.x

我很震惊,需要帮助.我想从给定的整数列表中找到素数的总和.以下是一些相同的测试用例.

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)

Oha*_*tan 5

这部分是错的:

        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)