在Python中计算素数之和这行代码有什么作用?

2024-04-25 19:38:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简短的函数,可以计算所有质数的和,直到一个极限。以下是上下文的完整代码:

def primes_sum(limit):
    limitn = limit+1
    not_prime = [False] * limitn
    primes = []

    for i in range(2, limitn):
        if not_prime[i]:
            continue
        for f in xrange(i*2, limitn, i):
            not_prime[f] = True

        primes.append(i)

    return sum(primes)

这对我来说很有意义,但我不明白这一部分:

^{pr2}$

这到底是为了什么?它是如何工作的?它如何判断一个数是否是素数?我试着查了一下,但找不到答案。

提前谢谢。


Tags: 函数代码infalseforifdefnot
3条回答

[False]*n用n个元素初始化列表,这些元素都是False。这种初始化方式通常被用作一种优化方法,当你预先知道列表中包含多少元素时,它比用.append()添加元素要快得多。在

它初始化limitnFalse值的列表。e、 g.:

>>> [False]*3
[False, False, False]

基本上它会阻止你以后得到一个IndexError。在

您只需创建一个长度为limitnlist,其所有元素都初始化为False。在

*是一个重复运算符。当应用于以integern作为right操作数的List时,它会重复listn次。在

也可以在字符串上使用它:

>>> [False] * 2
[False, False]
>>> "rohit" * 2
rohitrohit

相关问题 更多 >