QA & Engineering Blog

A Blog about Quality · Automation · Engineering

🏠 홈으로

[Silver III] 소수 구하기 - 1929

문제 링크

성능 요약

메모리: 40848 KB, 시간: 544 ms

분류

수학(math), 정수론(number_theory), 소수 판정(primality_test), 에라토스테네스의 체(sieve)

문제 설명

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

입력

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

출력

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

💡 Solutions

📄 소수 구하기.py

import sys
import math

M, N = map(int, sys.stdin.readline().split())
num_list = [True for _ in range(N + 1)]

for idx in range(2, int(math.sqrt(N)) + 1):
    if num_list[idx] == True:
        i = 2
        while idx * i <= N:
            num_list[idx * i] = False
            i += 1

for i in range(M, N + 1):
    if num_list[i]:
        if i != 1:
            print(i)