如何在Python中求一定范围内的素数之和?

问题描述 投票:0回答:3

我对 Python 和一般编程完全陌生,所以如果有人能够为初学者提供非常友好的帮助,那将会很有帮助。我正在尝试让素数之和达到 50。

我使用了下面的代码,但它在我的总和上增加了 2。例如,50 以内的素数之和应该是 326,但我得到 328 作为我的输出

upto = int(input("Find sum of prime numbers upto : "))

sum = 0

for num in range(2, upto + 1):

    
    for i in range(2, num):
        if (int(num % i) == 0):
            break;

    #If the number is prime then add it.
    else:
        sum += num

print("\nSum of all prime numbers upto", upto, ":", sum)
python-3.x primes
3个回答
0
投票

您的代码正在运行很好,“从1到50的素数之和”的答案是328而不是326,如果您仍然对此有疑问,您可以使用下面的代码检查您的结果:

说明:

给定一个范围[l, r]

,任务是找到该范围内所有素数的总和。

# from math lib import sqrt method from math import sqrt # Function to compute the prime number def checkPrime(numberToCheck) : if numberToCheck == 1 : return False for i in range(2, int(sqrt(numberToCheck)) + 1) : if numberToCheck % i == 0 : return False return True # Function to iterate the loop # from l to r. If the current # number is prime, sum the value def primeSum(l, r) : sum = 0 for i in range(r, (l - 1), -1) : # Check for prime isPrime = checkPrime(i) if (isPrime) : # Sum the prime number sum += i return sum # Driver code if __name__ == "__main__" : l, r = 1, 50 # Call the function with l and r print(primeSum(l, r))
我在上面的代码中设置了范围,只需将代码复制并粘贴到编辑器中并运行代码,您就会看到结果。


0
投票
您需要处理两个部分。一是检查该数字是否是质数。其次是迭代数字范围。请参考下面的代码,

from math import sqrt sum = 0 #some explanation here we are iterating from 50 all the way to 1. So you can indicate your range here. -1 is the step value which tells the difference between each iteration. for i in range(50, 0, -1): # Check whether it is a prime number here bPrime = True #initialize a boolean here to be indicated by the loop below for a in range(2, int(sqrt(i)) + 1): if i % a == 0: bPrime = False #definitely not a prime,break the loop and set boolean to false break bPrime = True #not ==0 so it is a prime, set boolean to true if (bPrime) : # Add up if it is a prime number sum += i #view the results print(sum)
它应该给你328


0
投票
50 以内的素数之和仅为 328,而不是 326。

但是,如果您想要前 50 个

奇数质数的总和,那么您可以对代码进行较小的更改,如下所示,这将为您提供 326 [这是范围 50 之前的奇数质数的总和]

upto = int(input("Find sum of prime numbers upto : ")) sum = 0 for num in range(3, upto+1): for i in range(2, num): if (int(num % i) == 0): break; #If the number is prime then add it. else: sum += num print("\nSum of all prime numbers upto", upto, ":", sum)
    
© www.soinside.com 2019 - 2024. All rights reserved.