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

chanyeong kim·2022년 2월 3일
0

백준

목록 보기
8/200
post-thumbnail

📩 출처

문제

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

입력

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

출력

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

👉 생각

  • 숫자 N이 소수인지 확인할 때는 2부터 N까지를 N으로 나누어서 0으로 나누어지는 것이 2와 N 뿐일 때이지만 대부분 시간초과가 발생한다
  • 이때 사용해야 하는 것이 에라토스테네스의 체 이다.
  • 굳이 N까지 확인하지 않고 2부터 N의 제곱근까지 약수의 여부를 검증하는 방법이다.
  • 2 부터 N의 제곱근까지 모두 나누어 떨어지지 않으면 소수임을 확인하는 함수를 만들어서 출력을 해주었다.
m,  n = map(int, input().split())

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

for num in range(m, n+1):
    if check(num):
        print(num)

0개의 댓글