소수(prime number)는 자신보다 작은 2개의 자연수를 곱해 만들 수 없는 1보다 큰 자연수를 말한다. 이와 같은 의미로 1과 자기 자신 외에 약수가 존재하지 않는 수를 말한다.
코딩 테스트에서는 이러한 소수를 판별하는 방식을 묻는 소수 구하기 문제가 종종 출제된다.
소수를 구하는 대표적인 판별법으로는 에라토스테네스의 체를 들 수 있다.
에라토스테네스의 체 원리
에라토스테네스의 체 원리 이해하기

이로써 1~30까지의 수 중 소수는 [2, 3, 5, 7, 11, 13, 17, 19 ,23, 29]가 된다.
<aside> 💡 에라토스테네스의 체를 사용할 때 시간 복잡도
일반적으로 에라토스테네스의 체를 구현하려면 이중 for문을 사용하므로 시간 복잡도가 O(N²) 정도라고 판단할 수 있다. 그러나 실제 시간 복잡도는 최적화의 정도에 따라 다르겠지만, 일반적으로 **O(Nlog(logN))**이다. 그 이유는 배수를 삭제하는 연산으로 실제 구현에서 바깥쪽 for문을 생략하는 경우가 빈번하게 발생하기 때문이다.
</aside>