본문 바로가기
파이썬 코딩테스트

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

by 준벨롭 2024. 2. 16.

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

답안

def check(num):
    n = num**0.5
    for i in range(2, int(n)+1):
        if num % i == 0:
            return False
    else:
        return True


a, b = map(int, input().split())

for i in range(a, b+1):
    if i == 1:
        continue
    elif check(i):
        print(i)
        
# 소수인지를 확인하는 check 함수 생성
# 해당 숫자가 소수인지 확인하기 위해선 해당 숫자의 제곱근까지만 확인해도 된다.
# 2부터 주어진 숫자의 제곱근까지 나머지가 0인 값이 있다면 False반환, 아니면 True
# check함수에서 True가 반환된다면, 그 숫자를 출력한다.

후기

함수 사용이 익숙치 않아 혼자서 해결하지 못한 문제이다.

소수 판별을 할 때 시간을 아끼기 위해서 2부터 해당 숫자의 제곱근까지만 나눠주었다.

다음에 다시 풀어보기

728x90