에라토스테네스의 체 원리
- 구하고자 하는 소수의 범위만큼 1차원 배열 생성
- 2부터 시작하고 현재 숫자가 지워진 상태가 아닌 경우 현재 선택된 숫자의 배수에 해당하는 수를 배열에서 끝까지 탐색하면서 삭제, 이때 처음으로 선택된 숫자는 삭제하지 않음
- 배열의 끝까지 반복한 후 배열에 남은 수를 출력
- N의 제곱근까지만 탐색하면
- for문을 생략하게 만들어 시간 복잡도는 O(Nlog(logN))
primes = [True] * 1000001
primes[0] = False
primes[1] = False
for i in range(2, int(math.sqrt(1000001)) + 1):
if primes[i] == False:
continue
for j in range(i * 2, 1000001, i):
primes[j] = False
'💻 Computer Science > Coding Test' 카테고리의 다른 글
[Coding Test] 최대공약수 & 최소공배수 구하기 (0) | 2024.09.01 |
---|---|
[Coding Test] 코딩 테스트 기초 (0) | 2024.04.22 |
[Coding Test] 기본 (0) | 2024.04.22 |