소수 구하기
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력
3 16
예제 출력
3
5
7
11
13
풀이
from sys import stdin
# 소수 구하기
start, end = map(int, stdin.readline().split())
def is_prime(num):
if num == 1:
return False
else:
# 2부터 num의 제곱근(**0.5) 까지 검사
for i in range(2, int(num**0.5)+1):
print(i)
if num%i == 0:
return False
return True
for i in range(start, end+1):
if is_prime(i):
print(i)
한줄 코멘트
시간 단축을 위한 방법으로 제곱근을 통한 검사를 사용하는 것을 알기까지 너무 오래걸려 다시는 까먹지 않을 것 같다.
'Algorithm' 카테고리의 다른 글
[다익스트라] 백준 1916 / 최소비용 구하기 / JAVA (0) | 2023.09.25 |
---|---|
[자바] SWEA - 차량 정비소(2477) 풀이 (0) | 2022.10.14 |
[파이썬] 백준 - 프린터 큐(1966) 풀이 (0) | 2022.05.20 |
[파이썬] 백준 - 수 찾기(1920) 풀이 (0) | 2022.05.17 |
[파이썬] 백준 - 체스판 다시 칠하기(1018) 풀이 (0) | 2022.05.08 |