에라토스테네스 체 란?
- 소수(Prime Number)를 판별하는 알고리즘이다.
- 소수들을 대량으로 빠르고 정확하게 구하는 방법이다.
단일 숫자 소수 여부 확인
- 어떤 수의 소수의 여부를 확인 할 때는, 특정한 숫자의 제곱근 까지만 약수의 여부를 검증하면 O(N^1/2)의 시간 복잡도로 빠르게 구할 수 있다.
- 수가 수(N이라고 가정)를 나누면 몫이 생기는데, 몫과 나누는 수 둘 중 하나는 N 제곱근 이하이기 때문이다.
- 만약, 대량의 소수를 한꺼번에 판별해야할 경우는 '에라토스테네스 체'를 이용한다.
에라토스테네스 체 원리
에라토스테네스 체는 가장 먼저 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에 하나씩 지워나가는 방법을 이용한다.
- 배열을 생성하여 초기화한다.
- 2부터 시작해서 특정 수의 배수에 해당하는 수를 모두 지운다.
- 2부터 시작하여 남아있는 수를 모두 출력한다.
- 여담이지만, 소수를 구하는 에라토스테네스 체를 역으로 이용해서 곱한 뒤 약수를 구하는 쪽으로도 이해할 수 있다.(프로그래머스 - 기사단원의 무기 문제 참고)
[알고리즘] 백준 - 소수 구하기 (1929번 / JAVA)
[알고리즘] 백준 - 골드바흐 파티션 (17103번 / JAVA)
[알고리즘] 프로그래머스 - 기사단원의 무기 (136798번 / JAVA)
- 위 벨로그 페이지는 모두 내가 푼 문제들이다.