[백준] 1929번: 소수 구하기

    728x90

    또다시 소수 구하기 문제였다. 소수의 조건인 1과 자기 자신으로만 나누어진다를 명심하고 풀이에 임했다.

    풀이는 다음과 같다

     

    풀이

    1. 1은 소수가 아니다 (코드에서 num <= 1 혹은 i == 1인 부분)

    2. 그 이후의 숫자에서 입력 받은 숫자를 2부터 i의 제곱근까지의 숫자로 나누어 떨어지는지 확인해서 i가 반복문 속의 숫자로 나누어떨어지다면 소수가 아니다. (자기 자신으로만 나누어지니까)

     

    최종 코드

    최종적으로는 아래 두 코드로 풀었다.

    def is_prime(num):
        if num <= 1:
            return False
    
        if num <= 2:
            return True
    
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                return False
    
        return True
    
    m, n = map(int, input().split())
    for i in range(m, n + 1):
        if is_prime(i):
            print(i)

    위 코드가 return을 boolean으로 수정한 버전이고, 처음에 이걸로 안풀려서 아예 틀렸나보다 싶어 다시 푼것이 아래의 코드였다.

    def is_prime(num):
        if i==1:
            return 0
        for j in range(2,int(i**0.5)+1):
            if i%j==0:
                break
        else:
            print(num)
    
    
    m, n = map(int, input().split())
    for i in range(m, n + 1):
        is_prime(i)

     

    트러블슈팅

    함수를 만들면서 return 0를 통해 진행했는데, 

    def is_prime(num):
        if num <= 1:
            return 0
    
        if num <= 2:
            print(num)
    
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                return 0
    
        print(num)
    
    
    m, n = map(int, input().split())
    for i in range(m, n + 1):
        is_prime(i)

    이게 틀린 결과로 나와서 진짜 이유를 모르겠었다. 손코딩으로 다시 디버깅해도 모르겠어서 지피티한테 물어봤는데 원인이 return 0였다...

     

     

    'Algorithm > 백준' 카테고리의 다른 글

    [백준] 6588: 골드바흐의 추측  (1) 2023.10.14
    [백준] 1978: 소수 찾기  (1) 2023.10.11
    [백준] 17427: 약수의 합 2  (1) 2023.10.01

    댓글