1

我对这个 python 素数检查功能有一个小问题。这真的很愚蠢,但是[2]in the in thefor n in [2]有什么作用呢?

我理解检查素数的公式,没问题,但不知道那[2]是什么。

来自:http ://en.wikibooks.org/wiki/Python_and_Math

from math import ceil
def prime(input):
    for n in [2] + range(3, int(ceil(input**0.5)), 2):
        if input%n == 0:
            return False
    return True

感谢您回答我的愚蠢问题。

4

1 回答 1

1

这只是列表添加:

>>> range(3, 10, 2)
[3, 5, 7, 9]
>>> [2] + range(3, 10, 2)
[2, 3, 5, 7, 9]

即他们想检查被 2 整除,但显然没有必要检查被 4、6、8 整除......所以通过这个操作,它是在奇数列表的开头“添加”一个 2。

顺便说一句,这个函数被破坏了——它返回prime(2) == False并且prime(1) == True都是错误的。

于 2013-04-23T15:16:42.970 回答