happy coding

[level 1] 소수 찾기 본문

coding study/programmars

[level 1] 소수 찾기

yeoonii 2024. 7. 2. 00:34

문제 설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

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

내 풀이

def solution(n):
    if n < 2:
        return 0
    
    ans = [True] * (n + 1)
    ans[0] = ans[1] = False

    for i in range(2, int(n**0.5) + 1):
        if ans[i]:
            for j in range(i * i, n + 1, i):
                ans[j] = False

    return sum(ans)

 

다른 풀이

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)

 

'coding study > programmars' 카테고리의 다른 글

[level 1] 옹알이 (2)  (0) 2024.07.02
[level 1] 소수 만들기  (0) 2024.07.01
[level 1] 과일 장수  (0) 2024.07.01
[level 1] 푸드 파이트 대회  (0) 2024.07.01
[level 1] 모의고사  (0) 2024.07.01
Comments