ComputerScience/알고리즘
에라토네스의 체
slown
2025. 3. 25. 22:06
목차
1.에라토네스의 체?
2.작동원리
3.예제
1.에라토네스의 체?
에라토네스의 체는 대 그리스의 수학자 에라토스테네스가 고안한 소수 판별 알고리즘이다. 이 알고리즘은 2부터 N까지의 자연수 중에서 소수를 효율적으로 찾는 방법으로, 현재까지도 널리 사용되고 있다.
2.작동원리
에라토스테네스의 체는 배수 제거 방식을 사용하여 소수를 판별한다. 초기에는 2부터 N까지의 모든 정수를 소수라고 가정한 뒤, 각 수의 배수를 지워나가면서 최종적으로 소수만을 남기는 방식입니다.
작동원리는 다음과 같습니다.
만약에 n 이 30일 때
- 2부터 30까지 나열
→ [2, 3, 4, 5, ..., 30] - 가장 작은 수인 2는 소수니까 남기고, 2의 배수들 제거
- 남은 수 중 다음 작은 수(3)는 소수니까 남기고, 3의 배수들 제거
- 남은 수 중 다음 작은 수(5)... 이런 식으로 진행
- √n까지 반복, 이후 남은 수는 전부 소수!
3.예제
에라토네스의 체를 코드를 작성을 해보면 다음과 같습니다.
int n = 30; // 원하는 범위의 숫자
boolean[] isPrime = new boolean[n + 1];
// 초기값: 모두 소수(true)로 설정
Arrays.fill(isPrime, true);
isPrime[0] = false;
isPrime[1] = false;
// 에라토스테네스의 체
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false; // i의 배수는 소수 아님
}
}
}
// 결과 출력
System.out.println(n + " 이하의 소수:");
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}