我对这个python prime检查功能有一个小问题。这真的很愚蠢,但[2]
中的for 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
感谢您回答我的愚蠢问题。
答案 0 :(得分: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
这两个都是错误的。