使用python对10000以下的素数求和 第一部分 第二部分

使用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(

运行这个程序,最后我得到了一个none。我不知道怎么了,请帮助
brun
没有返回语句,所以默认情况下它返回
none
。所以
print(brun(10000))
prints
None

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))
prints
None

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