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

新手上路,请多包涵

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

 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)

原文由 Agarwal Prega 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 597
2 个回答

这部分是错误的:

         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

原文由 Ohad Eytan 发布,翻译遵循 CC BY-SA 3.0 许可协议

def sum_primes(a):
    sum = 0
    for num in a:
       if num > 1:
           for i in range(2,num):
               if (num % i) == 0:
                   break
           else:
               sum = sum + num
    if sum < 1:
        print("sum_primes(" + str(a) + ") --> " + "None")
    else:
        print("sum_primes(" + str(a) + ") --> " + str(sum))
sum_primes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
sum_primes([2, 3, 4, 11, 20, 50, 71])
sum_primes([])

#code by Rushabh Koradia

原文由 Rushabh Koradia 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题