[프로그래머스] Level1 - 소수 찾기(Python)

HJ Kim·2022년 6월 19일
0

프로그래머스

목록 보기
37/50

문제 설명
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를 반환

내 문제 풀이

  • 별짓 다 해봤는데도 안돼서 결국 구글링을 통해 풀었다.

  • 내 원래 컨셉은 아래와 같다.

    • n이 입력으로 주어지면 2~n 까지 반복문 (1차)

      for i in range(2,n+1)
      	
    • 2부터 1차 반복문의 값 까지의 범위로 하는 반복문 (2차)

      for j in range(2, i)
      
    • 이렇게 반복문 2개 써서 푼 내 코드는 아래와 같다.


def solution(n):
    sum = 0
    s = 0
    for i in range(2,n+1):
        for j in range(2,i):
            if i % j == 0:
                s += 1
        if s == 0:
            sum += 1
        s = 0
    return sum
  • 근데 항상 유효성검사와 정확성검사 일부를 패스를 못하더라.. 그래서 결국 구글링 해서 찾음
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)
  • 에라토스테네스 체를 이용해서 구하는 방법. 너무 쉽게 통과해서 짜증난다
profile
티끌모아 태산을 아는 사람

0개의 댓글