문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.예제 입력 1
3 16예제 출력 1
3
5
7
11
13
## https://www.acmicpc.net/problem/1929
import math
num_one, num_two = map(int, input().split(' '))
def check_decimal(num):
if num == 1:
return False
n = int(math.sqrt(num))
for i in range(2, n + 1):
if num % i == 0:
return False
return num
for num in range(num_one, num_two+1):
if check_decimal(num):
print(num)
맨 처음 문제를 접근할 때 단순 소수문제라고 생각했습니다.
1,000,000 까지 체크를 하다보니깐 시간초과 발생했습니다.
그래서 sqrt함수를 사용해서 제곱근까지 낮춰봤습니다.
그래서 시간초과 발생하더라고요...
그래서 함수로 빼고 한번이라도 나눠지면 바로 return하게 했더니 성공했습니다.
알고리즘 공부를 거의 한 적이 없어서 단순하게 되기만 하면 되는거 아니야 라는 생각으로 접근했는데 시간이나 여러 부분으로 좀 더 고민하고 코드를 짜야될꺼 같습니다.