백준 1929번
처음 제출한 코드
start_num, end_num = map(int, input().split())
for i in range(start_num, end_num+1):
check = True
for j in range(2, i):
if i%j==0:
check = False
if check==True:
print(i)
두번째 제출한 코드
start_num, end_num = map(int, input().split())
for i in range(start_num, end_num+1):
check = True
for j in range(2, int(i**0.5)+1):
if i%j==0:
check = False
if check==True:
print(i)
- i의 1/2승까지만 검사하고
break구문을 추가해 시간 절감
- 시간 초과가 아닌 그냥 오답!
start_num이 1부터 시작하는 경우, 1은 range(2, int(i**0.5)+1) 범위에 들어가지 못해서 check 변수를 False로 바꿔주지 못함
=> 하지만 1은 소수가 아님!!
=> 범위가 1부터 시작할 때에 대한 처리 필요
최종 제출 코드
start_num, end_num = map(int, input().split())
for i in range(start_num, end_num+1):
check = True
if i==1: check=False
for j in range(2, int(i**0.5)+1):
if i%j==0:
check = False
break
if check==True:
print(i)
if i==1: check=False 구문 추가
- 정답!