소수 찾기

sky·2022년 7월 22일

Programmers Lv.1(Python)

목록 보기
19/28
post-thumbnail

문제 설명

문제

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

제한 조건 - n은 2이상 1000000이하의 자연수입니다.

입출력 예

  • 입출력 예 #1
    1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
  • 입출력 예 #2
    1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환

Solution

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)

성공한 코드이다.

Total Time

  • 2022-07-13 | 16:20 - 16:40 Success!
profile
개발자가 되고 싶은 1人

0개의 댓글