Today
Total
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

기억은 짧고 기록은 길다

[프로그래머스/Programmers] 소수 찾기_1 - Python 본문

CodingTest/programmers

[프로그래머스/Programmers] 소수 찾기_1 - Python

ukunV 2021. 8. 31. 00:00

Link

 

코딩테스트 연습 - 소수 찾기

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

programmers.co.kr

 

Solution

해당 문제는 에라토스테네스의 체를 사용하지 않으면 효율성 테스트를 통과할 수 없다.

에라토스테네스의 채는 (int(n ** 0.5) + 1)까지의 수들의 배수들을 지워나가며 소수를 구해내는 방법이다.

Sieve_of_Eratosthenes_animation

def solution(n):
    sieve = [True] * (n + 1)

    m = int(n ** 0.5)

    for i in range(2, m + 1):
        if sieve[i] == True:
            for j in range(i + i, n + 1, i):
                sieve[j] = False

    return sieve.count(True) - 2
🔑 key point: 에라토스테네스의 체

 

Other Solution

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)
Comments