Algorithm/백준

[백준] 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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.