규도자 개발 블로그

[프로그래머스/Level1/파이썬3(python3)] 소수 찾기 본문

알고리즘/풀이

[프로그래머스/Level1/파이썬3(python3)] 소수 찾기

규도자 (gyudoza) 2020. 4. 9. 17:22

[프로그래머스/Level1/파이썬3(python3)] 소수 찾기

문제

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

제한사항

  • n은 2이상 1000000이하의 자연수입니다.

입출력 예

nresult
104
53

입출력 예 설명

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

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

풀이

def solution(n):
    n = n + 1
    sieve = [True] * n
    m = int(n ** 0.5)
    for i in range(2, m + 1):
        if sieve[i]:
            for j in range(i + i, n, i):
                sieve[j] = False
    return len([i for i in range(2, n) if sieve[i]])

설명

과거 포스팅했던 에라토스테네스의 체를 사용하여 풀었다. 이곳을 확인하면 해당 포스팅을 확인해볼 수 있다.

 

Comments