在Python 3.5中如何找到给定范围内的素数之和?
How do I find the sum of prime numbers in a given range in Python 3.5?
我设法用这个在给定范围内创建了一个素数列表:
import numpy as np
num = int(input("Enter a number: "))
for a in range(2,num+1):
maxInt=int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
print (a)
我现在想求出范围内所有质数的总和,所以我就记下了
print (sum(a))
但是在尝试这样做时,我得到以下回溯:
Traceback (most recent call last):
File "C:/Users/Jason/PycharmProjects/stackidiots/scipuy.py", line 11, in <module>
print(sum(a))
TypeError: 'int' object is not iterable
在您的例子中,a
是循环中使用的整数变量,不是 可迭代变量。
import numpy as np
num = int(input("Enter a number: "))
primes = []
for a in range(2,num+1):
maxInt= int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
primes.append(a)
print(sum(primes))
因此,如果我们只是将它们附加到列表中而不是打印它们,我们在获取列表 primes
的 sum
时会得到以下输出。
Enter a number: 43
281
在循环内对它们求和
import numpy as np
num = int(input("Enter a number: "))
result=0
for a in range(2,num+1):
maxInt=int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
print (a)
result+=a
print(result)
如果你想使用 sum,你可以制作一个生成器函数,在循环中生成每个 a
,这样你就有一个 iterable 调用总和:
num = int(input("Enter a number: "))
def sum_range(num):
for a in range(2, num + 1):
maxInt = int(a **.5) + 1
for i in range(2, maxInt):
if a % i == 0:
break
else:
yield a
print(sum(sum_range(num)))
我设法用这个在给定范围内创建了一个素数列表:
import numpy as np
num = int(input("Enter a number: "))
for a in range(2,num+1):
maxInt=int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
print (a)
我现在想求出范围内所有质数的总和,所以我就记下了
print (sum(a))
但是在尝试这样做时,我得到以下回溯:
Traceback (most recent call last):
File "C:/Users/Jason/PycharmProjects/stackidiots/scipuy.py", line 11, in <module>
print(sum(a))
TypeError: 'int' object is not iterable
在您的例子中,a
是循环中使用的整数变量,不是 可迭代变量。
import numpy as np
num = int(input("Enter a number: "))
primes = []
for a in range(2,num+1):
maxInt= int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
primes.append(a)
print(sum(primes))
因此,如果我们只是将它们附加到列表中而不是打印它们,我们在获取列表 primes
的 sum
时会得到以下输出。
Enter a number: 43
281
在循环内对它们求和
import numpy as np
num = int(input("Enter a number: "))
result=0
for a in range(2,num+1):
maxInt=int(np.sqrt(a)) + 1
for i in range(2,maxInt):
if (a%i==0):
break
else:
print (a)
result+=a
print(result)
如果你想使用 sum,你可以制作一个生成器函数,在循环中生成每个 a
,这样你就有一个 iterable 调用总和:
num = int(input("Enter a number: "))
def sum_range(num):
for a in range(2, num + 1):
maxInt = int(a **.5) + 1
for i in range(2, maxInt):
if a % i == 0:
break
else:
yield a
print(sum(sum_range(num)))