[백준] 1929번(소수 구하기)

·2023년 2월 2일

백준 문제풀이

목록 보기
29/159

백준 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_num1부터 시작하는 경우, 1range(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 구문 추가
  • 정답!
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글