티스토리 뷰

반응형

수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견했다.

1/.출처: 위키백과

알고리즘

1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형 수들이 여기에 해당한다.

2. 2는 소수이므로 오른쪽에 2를 쓴다.(빨간색)

3. 자기 자신을 제외한 2의 배수는 모두 지운다.

4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다.( 초록색)

5. 자기 자신을 제외한 3의 배수를 모두 지운다.

6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다.( 파란색)

7. 자기 자신을 제외한 5의 배수를 모두 지운다.

8. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다.

 

그림의 경우 11^2 > 120 이므로, 11 보다 작은 수들의 배수들만 지워도 충분하다. 

즉,  120보다 작거나 같은 수 가운데, 2,3, 5,7 의 배수를 지우고 남은 수는 모두 소수이다.


파이썬

def prime_list(n):
	# 에라토스테네스의 채 초기화 n 개의 요소에 True 설정 (소수로 간주)
	sieve = [True] *n
    # n의 최대 약수가 sqrt(n) 이하 이므로 i = sqrt(n) 까지 검사
    m  = int(n**0.5)
    for i in range(2,m+1):
    	if sieve[i] ==True:
        	for j in range(i+i, n, i): # i 이후, i 의 배수를 False 판정
            	sieve[j]  = False
                
     return [i for i in range(2,n) if sieve[i] == True] # 소수 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'알고리즘' 카테고리의 다른 글

프로그래머스 스킬 트리 파이썬  (0) 2020.11.13
프로그래머스 기능개발 파이썬  (0) 2020.11.13
백준 2581번 소수  (0) 2020.11.11
백준 1978번 소수 찾기  (0) 2020.11.11
프로그래머스 2016년  (0) 2020.11.10
댓글