我有一个关于这个Python素数检查函数的小问题。这确实很愚蠢,但是 for n in [2]
中的 [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
感谢您回答我的愚蠢问题。
最佳答案
这只是列表添加:
>>> 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
这两个都是错误的。
关于Python 引发数组困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173049/