S E P H ' S

[Python] 소수찾기 본문

Algorithm/Programmers

[Python] 소수찾기

yoseph0310 2021. 7. 6. 00:01

 

 

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

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

programmers.co.kr

특정 범위 내의 소수를 판별하는 문제이다. 블로그의 에라토스테네스의 체의 설명을 보고 온다면 코드 이해가 쉬울 것이다.

 

에라토스테네스의 체

에라토스테네스의 체는 가장 대표적인 소수(Prime Number) 판별 알고리즘이다. 임의의 자연수 n에 대해 그 이하의 모든 소수를 찾는 가장 간단하고 빠른 방법이다. 먼저 입력받은 수가 소수인지 판

yoseph0310.tistory.com

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

    return len([i for i in range(2, n+1) if sieve[i]])

python의 set을 이용하여 더 간결하게 코드를 작성할 수 있다.

 

def sol2(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)​

 

2번째 코드가 보기에는 간결하지만 수행속도, 메모리를 더 많이 소모한다. 아마 set때문이지 않을까 싶다.

 

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 신규 아이디 추천  (0) 2021.07.06
[Python] 체육복  (0) 2021.07.06
[Python] 모의고사  (0) 2021.07.05
[Python] 소수 만들기  (0) 2021.06.30
[Python] 시저 암호  (0) 2021.06.25