좌충우돌 개발자의 길

백준 알고리즘 | 1929번 (소수 구하기) | 파이썬 본문

CODING TEST/백준

백준 알고리즘 | 1929번 (소수 구하기) | 파이썬

sustronaut 2021. 7. 14. 21:54

1929번 (소수 구하기)*

  • M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
  • 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
  • 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
import math

n1, n2 = map(int, input().split())

not_sosu = 0
total = 0

sosu_list = []

for i in range(n1, n2+1):
    for j in range(2, int(math.sqrt(float(i)))+1):#제곱근까지만 체크하기
        if(i % j == 0):
            not_sosu += 1
            break
    if(not_sosu == 0):  # 소수라는 뜻
        sosu_list.append(i)
        total += 1
        if(i == 1):
            sosu_list.remove(i)
            total -= 1
    not_sosu = 0

if total == 0:
    print(-1)
else:
    for i in range(len(sosu_list)):
        print(sosu_list[i])

해석

  • 제곱근까지만 구해서 시간을 단축한다.

새롭게 알게 된 것

  • ** : 제곱근