벼룩시장에서 무작위 컴퓨터 부품이 잔뜩 든 큰 상자를 하나 샀어요. 그 부품들을 조립해서 맞춤형 컴퓨터를 만들기 시작했죠.
여러 부품 조합의 성능을 시험해 보고 싶어졌고, 직접 벤치마킹 프로그램을 만들어서 컴퓨터들을 서로 비교해 보기로 했어요. 그래서 선택한 것이 바로 유명한 "에라토스테네스의 체" 알고리즘이에요. 아주 오래된 알고리즘이지만, 컴퓨터를 한계까지 밀어붙일 만한 알고리즘이죠.
주어진 수 이하의 모든 소수를 찾는 프로그램을 만드는 것이 과제예요. 이 프로그램은 에라토스테네스의 체 알고리즘을 구현해야 해요.
소수는 1보다 큰 수 중에서 1과 자기 자신으로만 나누어떨어지는 수예요. 예를 들어 2, 3, 5, 7, 11, 13은 소수예요. 반대로 6은 소수가 아니에요. 1과 자기 자신뿐만 아니라 2와 3으로도 나누어떨어지기 때문이에요.
에라토스테네스의 체를 사용하려면, 먼저 2부터 주어진 수까지의 모든 수를 목록으로 만들어요. 그다음에는 다음 단계를 반복해요:
목록의 모든 수를 확인할 때까지 이 단계를 계속 반복해요. 끝나면 표시되지 않은 수는 모두 소수예요.
테스트는 이 알고리즘을 구현했는지가 아니라, 올바른 소수 목록을 만들어냈는지만 확인해요. 에라토스테네스의 체를 제대로 구현하고 있는지 확인하려면, 나눗셈이나 나머지 연산을 사용하지 않는지 확인하는 것이 좋은 첫 번째 테스트예요.
10 이하의 소수를 찾는다고 해봐요.
모든 수를 확인한 결과 2, 3, 5, 7이 아직 표시되지 않은 채로 남아 있어요. 이 수들이 10 이하의 소수예요.