평범한 연구소

[JAVA] 에라토스테네스의 체 본문

JAVA/알고리즘 공부

[JAVA] 에라토스테네스의 체

soyeonisgood 2022. 12. 17. 11:52

에라토스테네스의 체

"소수가 되는 수의 배수를 지우면, 남은 건 소수가 된다"라고 생각하는 알고리즘이다. 즉, 2,3,5,7 각 본인을 제외한 배수를 지운 나머지가 소수이다. 원리는 아래와 같다.

 

  1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다.
  2. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색)
  3. 자기 자신을 제외한 2의 배수를 모두 지운다.
  4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색)
  5. 자기 자신을 제외한 3의 배수를 모두 지운다.
  6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색)
  7. 자기 자신을 제외한 5의 배수를 모두 지운다.
  8. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. (노란색)
  9. 자기 자신을 제외한 7의 배수를 모두 지운다.
  10. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다.'

 

아레토스테네스의 체를 이용한 간단한 예제 코드를 보자. 

2022.12.17 - [JAVA/알고리즘 공부] - [백준] 17103번: 골드바흐 파티션 (자바 JAVA)