计算Python中素数的总和 - 这行代码的用途是什么?

时间:2013-02-19 16:38:52

标签: python calculator

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

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)

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

not_prime = [False] * limitn

这到底是什么意思?它是如何工作的,它如何判断一个数字是否是素数?我试过看,但我找不到答案。

提前致谢。

3 个答案:

答案 0 :(得分:3)

您只需创建listlimitn,其所有元素都已初始化为False

*是重复运算符。在List上使用integern作为right操作数时,它会重复list n次。

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

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

答案 1 :(得分:1)

初始化limitn False值列表。 e.g:

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

基本上它会阻止您稍后获得IndexError

答案 2 :(得分:0)

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