프로그래머스 LV1 - 소수 찾기

anonymous·2021년 5월 28일
0

문제 설명

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

제한 사항
⦁ n은 2이상 1000000이하의 자연수입니다.

풀이

import math
def numberOfPrime(n):
    prime = [True] * (n+1)
    prime[0] = False
    prime[1] = False
    m = int(math.sqrt(n))
    for i in range(2, m + 1):
        if prime[i] == True:           
            for j in range(i+i, n+1, i): 
                prime[j] = False
    return prime.count(True)

다른사람 풀이

def numberOfPrime(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)

배운 점

⦁ 아리스토텔레스의 체를 이용
⦁ 집합(set)의 차집합

아리스토텔레스의 체
집합(set)

profile
아는게 없음

0개의 댓글