문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
10 | 4 |
5 | 3 |
코드 작성
def solution(n):
num = set(range(2, n + 1))
for i in range(2, int((n ** 0.5)) + 1):
if i in num:
num -= set(range(2 * i, n + 1, i))
return len(num)
- 아리토스테네스의 체를 이용한다.
- 가장 큰 수의 제곱근까지만 반복문을 만들어서 배수를 하나씩 지워나가면 된다.