본문 바로가기
🔅코딩테스트 공부🔅/❗백준

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

by 윤무무 2023. 2. 26.

https://www.acmicpc.net/problem/1929

 

1. 난이도 실버3 (🥈) 

 

2. 문제 해결 방법

1. 에라토스테네스의 체를 이용해 소수/합성수를 구분한다.

 

2. num의 value가 True인 수 중 m이상, n이하일 때만 출력하면 된다.

 

혹시 에라토스테네스를 잘 썼는데 자꾸만 틀렸다고 뜬다면, m이 1인 경우를 생각했는지 고려하면 좋을 것 같다.

 

(이거 놓쳐서 m부터 n+1 까지 반복문 돌렸다가 틀렸었음,,😭)

 

3. 내가 작성한 코드
m,n = map(int, input().split()) #m이상 n이하

total = [True] * (n+1)

for i in range(2, n+1):
  if total[i] ==  True:
    for j in range(2*i, n+1, i):
      total[j] = False

for i in range(2,n+1):
  if i >= m and i <= n:
    if total[i] == True:
      print(i)
#제곱근 이용

m,n = map(int,input().split())

num = [True] * (n+1)

check = int(n**0.5)

for i in range(2,check+1):
    if num[i] == True:
        for j in range(2*i, n+1, i):
            num[j] = False

if m == 1: m += 1

for i in range(m,n+1):
    if num[i] == True:
        print(i)

 

 

에라토스테네스 체는 한 번씩 공부해주지 않으면 까먹는 것 같다.

 

종종 복습하러 돌아와겠삼~

 

 

 

메모

- 2달 만에 복습하러 왔는데 또 출력할 때 1을 고려 안 해줘서 틀렸다. 

댓글