-
[알고리즘] 에라토스테네스의 체(Eratosthenes Sieve)Problem Solving/자료구조-알고리즘 2025. 4. 7. 00:38
이번 글에서 써볼 내용은 수학에서도 나오는 개념인
에라토스테네스의 체(Eratosthenes Sieve)입니다.
정의
를 만족하는 이하의 모든 의 배수들을 제외시켜서 소수를 찾아내는 알고리즘
동작 과정
- 2부터
까지 순회한다.
이기 때문에 까지 오는 과정에서 이하의 수들은 이미 모든 소수 판별이 끝나있다.
- 해당 수
가 제외된 수인지 아닌지 판단한다.- 제외되지 않은 수라면
부터 를 더하면서 더해진 수를 제외시킨다. 이전의 수들과 를 곱한 수들은 이미 처리가 끝났기 때문에 부터 시작한다.
- 소수가 아니라면 이어서 순회한다.
- 제외되지 않은 수라면
구현
// 시간복잡도는 O(N log (log N))이다. #include <iostream> #include <cmath> using namespace std; int era[101]; int main() { int sq = sqrt(100); era[0] = era[1] = 1; for (int i = 2; i <= sq; i++) { if (era[i]) continue; for (int j = i * i; j <= 100; j += i) era[j] = 1; } }
이상으로 에라토스테네스의 체에 관한 내용을 마치겠습니다.
읽어주셔서 감사합니다.
'Problem Solving > 자료구조-알고리즘' 카테고리의 다른 글
[알고리즘] 누적합(Prefix Sum) (0) 2025.04.02