我对 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)
您的代码正在运行很好,“从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))
我在上面的代码中设置了范围,只需将代码复制并粘贴到编辑器中并运行代码,您就会看到结果。
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
但是,如果您想要前 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)