
문제
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)
입출력 예

Python
def solution(n):
answer = ""
sieve = [True]*n
m = int(n**0.5)
for i in range(2, m + 1):
if sieve[i] == True:
for j in range(i+i,n,i):
sieve[j] = False
answer = [i for i in range(2, n) if sieve[i] == True]
return len(answer)
에라토스테네스의 체를 이용한 것인데 이 코드에서 자기 자신을 포함하지 않아서 실패했다.
def solution(n):
import math
answer = ""
array = [True for i in range(n+1)]
for i in range(2, int(math.sqrt(n)) + 1):
if array[i] == True:
j = 2
while i * j <= n:
array[i * j] = False
j += 1
answer = [ i for i in range(2, n+1) if array[i] ]
return len(answer)
성공한 코드이다.