2013-08-11 1 views
1

이것은 매우 빠른 프라임 목록 생성기 ( Fastest way to list all primes below 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 부분을 의미합니까?

답변

1

처럼 보이는 배열 표기법처럼 보입니다.

[a] * 5 단지 i/2sieve에서의 값 또는 TrueFalse

이고 ::는 스트라이드를 정의하는 경우

if sieve[i/2][a,a,a,a,a] 검사되어진다.

this 대답을 참조하십시오.

관련 문제