728x90
1~n 사이의 소수 개수 구하기
더보기
문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
$($1은 소수가 아닙니다.$)$
제한 조건
n은 2이상 1000000이하의 자연수입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12921
에라토스테네스의 체를 이용해서 풀었습니다.
소수의 배수를 제거함으로써 소수만 남기는 방법
n의 제곱근 까지만 위 방법으로 체로 거르면 n까지의 소수를 모두 구할 수 있습니다.
def solution(n):
s = [0, 0] + [1] * (n-1)
for i in range(2, int(n**.5)+1):
if s[i]:
for j in range(i**2, n+1, i):
s[j] = 0
return sum(s)
이 문제를 응용하면 아래 백준 소수 구하기 문제를 쉽게 풀 수 있습니다.
[백준] 1929번 소수 구하기 [Python] (tistory.com)
더보기
입출력 예
n | result |
10 | 4 |
5 | 3 |
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
'IT > Python' 카테고리의 다른 글
[프로그래머스] Lv.1 2016년 [Python] (0) | 2023.09.27 |
---|---|
[백준] 21736번 헌내기는 친구가 필요해 [Python] - 그래프 이론 (0) | 2023.09.26 |
[백준] 1735번 분수합 [Python] - 기약 분수 (0) | 2023.09.25 |
[백준] 1074번 Z [Python] (0) | 2023.09.23 |