2부터 N까지의 소수를 찾는 알고리즘 중 구현하기도 쉽고 엄청 빠른 알고리즘
def sieve_of_eratosthenes(n):
"""
에라토스테네스의 체를 사용하여 n 이하의 모든 소수를 찾는 함수입니다.
Args:
n: 탐색 범위
Returns:
n 이하의 모든 소수를 담은 리스트
"""
# 2부터 n까지의 모든 숫자를 True로 초기화합니다.
primes = [True] * (n + 1)
# 0과 1은 소수가 아니므로 False로 설정합니다.
primes[0] = primes[1] = False
# 2부터 제곱근 n까지 반복합니다.
for i in range(2, int(n ** 0.5) + 1):
# i가 소수라면
if primes[i]:
# i의 배수를 모두 False로 설정합니다.
for j in range(i * i, n + 1, i):
primes[j] = False
# True인 인덱스를 리스트에 담아 반환합니다.
return [i for i, p in enumerate(primes) if p]
# 예시
n = 100
primes = sieve_of_eratosthenes(n)
print(primes)
코드는 제미나이가 생성해줌.
주목할만한건 제곱근을 int(n ** 0.5)
로 표현을 할 수 있었구나...