백준 1929 - 소수구하기(파이썬)

박진우·2022년 9월 17일
0

알고리즘

목록 보기
30/89

💡 백준 1929 - 소수구하기

◽ 문제




◽ 입력 & 출력




◽ 풀이

  • 처음에 이렇게 풀었는데 모든 수를 반복문을 통해 확인을 해서 그런거같은데 시간초과가 됐다.

  • 그래서 찾아보니 "에라토스테네의 체"라는 알고리즘을 사용하면된다고 한다. 하지만 에라토스테네의 체는 빠르지만 메모리를 그만큼 차지한다는 단점또한 있기에 익숙한 for문을 사용했다.

  • 문제를 풀다가 갑자기 ValueError: not enough values to unpack (expected 2, got 1) 이런 오류가 떴다.

  • 구글링을하다가 아래와 같이 예외처리를 하니깐 정상적으로 작동됐다.




  • 2번째 줄: m과n을 공백을 기준으로 분리해 받는다.

  • check_prime: 먼저 1은 소수가 아니기에 제외시킨다.

    • 첫번째 for문에서 num의 최대 약수sqrt(n) 이하이므로 i=sqrt(n)까지 검사한다.
    • 즉 4까지만 검사하면된다.
  • 10번째 줄: 나머지가 0이면 소수가 아니기 때문에 제외.


이제 함수를 만들어줬기 때문에 바로 확인 후 출력한다.


  • 마찬가지로 m이상n이하니깐 범위를 지정해준다.

  • check_prime()함수를 출력하면 m~n까지 i에 넣어줬으니깐 i가 들어가서 함수면 True니깐 True인 값 만 출력된다.

0개의 댓글