2013-07-25 5 views
0

다음은 소수를위한 간단한 eratosthenes 체이며 배수를 제거하고 배수의 빈 목록에 추가합니다. 내 질문은 만약 내가 루프에서 n+1 대신에 n을 사용하면 대답은 똑같이 나온다.이 eratosthenes 함수에서 n + 1을 사용하는 목적은 무엇입니까?

eratosthenes(10) 
2 
3 
5 
7 

def eratosthenes(n): 
    multiples = [] 
    for i in xrange(2, n+1): 
     if i not in multiples: 
      print i 
      for j in xrange(i*i, n+1, i): 
       multiples.append(j) 

복귀 출력 I는 모두 n으로 n+1 교체하면하면서 출력이 여전히 동일 루프 :

def eratosthenes(n): 
    multiples = [] 
    for i in xrange(2, n): 
     if i not in multiples: 
      print i 
      for j in xrange(i*i, n, i): 
       multiples.append(j) 

함수 상기와 같은 결과를 반환한다 .. .

eratosthenes(10) 
2 
3 
5 
7 

내 질문에 n 대신 n+1을 사용하는 이유는 무엇입니까?

+0

'eratosthenes (11)'을 시도하고 그 차이점을 비교하십시오. – RussW

답변

1

파이썬 range()xrange() 파이썬 조각 표기법과 같은 함수에는 최종 값이 포함되지 않습니다. xrange(2, 10)2에서 9까지 8 개의 숫자를 생성하며 이 아니며 n + 1은 생성 된 범위의 일부임을 확인합니다.

차이점을 확인하려면 eratosthenes(7) 또는 eratosthenes(11)을 사용하십시오. 10은 소수가 아니므로 걸러집니다.

+0

설명해 주셔서 감사합니다! –

관련 문제