코딩테스트/Python
[Level 1] 소수 찾기
eunki
2021. 8. 11. 15:32
728x90
[문제]
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
[제한조건]
- n은 2이상 1000000이하의 자연수입니다.
[코드] (시간 초과로 실패)
def solution(n):
answer = 0
for num in range(2, n+1):
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if is_prime:
answer += 1
return answer
[풀이 코드] (에라토스테네스의 체)
def solution(n):
num = set(range(2, n+1))
for i in range(2, n+1):
if i in num:
num -= set(range(2*i, n+1, i))
return len(num)
728x90