使用python对10000以下的素数求和 第一部分 第二部分
运行这个程序,最后我得到了一个none。我不知道怎么了,请帮助使用python对10000以下的素数求和 第一部分 第二部分,python,primes,Python,Primes,运行这个程序,最后我得到了一个none。我不知道怎么了,请帮助brun没有返回语句,所以默认情况下它返回none。所以print(brun(10000))printsNone Edit:如下文所述,您可能希望在brun末尾有一个return combs语句。然而,combs是一个包含N(N-1)/2元素的列表,因此我怀疑您是否想打印整个内容。您可能需要打印以下内容: def brun(N): list = find_primes(N-1) list2 = find_primes(
brun
没有返回语句,所以默认情况下它返回none
。所以print(brun(10000))
printsNone
Edit:如下文所述,您可能希望在brun
末尾有一个return combs
语句。然而,combs
是一个包含N(N-1)/2
元素的列表,因此我怀疑您是否想打印整个内容。您可能需要打印以下内容:
def brun(N):
list = find_primes(N-1)
list2 = find_primes(N)
combs = []
for x in list:
for y in list2:
if x - y ==2:
combs.append((1/x)+(1/y))
print(brun(10000))
它将打印
梳的最后一个元素brun
没有返回语句,因此默认情况下它返回None
。所以print(brun(10000))
printsNone
Edit:如下文所述,您可能希望在brun
末尾有一个return combs
语句。然而,combs
是一个包含N(N-1)/2
元素的列表,因此我怀疑您是否想打印整个内容。您可能需要打印以下内容:
def brun(N):
list = find_primes(N-1)
list2 = find_primes(N)
combs = []
for x in list:
for y in list2:
if x - y ==2:
combs.append((1/x)+(1/y))
print(brun(10000))
它将打印梳子的最后一个元素@比尔正确地回答了你的问题。但让我花点时间提出一个更好的算法;它被称为埃拉托斯提尼筛,由一位希腊数学家在两千多年前发明。其思想是,首先将小于n的所有数字标记为可能的素数,然后对每个素数,依次将其所有倍数标记为非素数,边走边收集素数:
print(brun(10000)[-1])
然后你可以通过说sum(primes(n))
来计算小于n的素数之和。如果你对素数编程感兴趣,我谦虚地在我的博客上推荐。比尔正确地回答了你的问题。但让我花点时间提出一个更好的算法;它被称为埃拉托斯提尼筛,由一位希腊数学家在两千多年前发明。其思想是,首先将小于n的所有数字标记为可能的素数,然后对每个素数,依次将其所有倍数标记为非素数,边走边收集素数:
print(brun(10000)[-1])
然后你可以通过说sum(primes(n))
来计算小于n的素数之和。如果你对素数编程感兴趣,我谦虚地在我的博客上推荐你
def primes(n):
sieve, ps = [True] * n, []
for p in xrange(2, n):
if sieve[p]:
ps.append(p)
for i in xrange(p*p, n, p):
sieve[i] = False
return ps