这显然是一个非常快的素数列表生成器( 列出 N 以下所有素数的最快方法),但我无法理解其中的某些部分,主要是因为语法。
def rwh_primes1(n):
""" Returns a list of primes < n """
sieve = [True] * (n/2)
for i in xrange(3,int(n**0.5)+1,2):
if sieve[i/2]:
sieve[i*i/2::i] = [False] * ((n-i*i-1)/(2*i)+1)
return [2] + [2*i+1 for i in xrange(1,n/2) if sieve[i]]
为什么sieve
定义为[True]
(一个布尔值)乘以一个整数?
什么意思if sieve[i/2]
?
什么意思sieve[i*i/2::i]
,尤其是::i
部分?