[백준/Python] - 1929번 소수 구하기

2025. 6. 8. 15:08·백준[파이썬]
728x90
반응형
SMALL

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

📜제출코드 

import sys
import math
input = sys.stdin.readline
M, N = map(int, input().split())
#1과 0은 무조건 True이기 때문
prime = [True for _ in range(N+1)]
prime[0], prime[1] = False, False
for i in range(2, int(math.sqrt(N))+1):
    if prime[i] == True:
        j = 2
        while j * i <= N:
            prime[i*j] = False
            j += 1
for i in range(M, N+1):
    if prime[i] == True:
        print(i)

 

📜풀이

에라토스테네스의 체를 이용해서 소수를 찾으면 된다.

 

📜에로트스테네스의 체란?

체를 치듯이 수를 걸러낸다고 하여 에라토스테네스의 체라는이름이 붙었는데 

 

에라토스테네스의 체 - 파이썬

에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자인 에라토스테네스가 만들어낸 방법인데, 마치 체를 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라는 이름이 붙었다.

velog.io

필자도 이 블로그 보고 이해를 했듯이 설명이 정말 잘되어있다.

 

다시 문제로 와서 M이상 N이하의 소수를 모두 출력해야한다.

 

1. 에라토스테네스의 체 초기화해주기

prime = [True for _ in range(N+1)]
prime[0], prime[1] = False, False

N범위 까지니까 N+1까지 범위를 적용해준다.

0 과 1은 소수가 아니니까 False로 초기화 해준다.

 

2. 소수 판별하기

for i in range(2, int(math.sqrt(N))+1):
    if prime[i] == True:
        j = 2
        while j * i <= N:
            prime[i*j] = False
            j += 1

 

📜N의 제곱근까지 해주는 이유는

16을 예시로 들어보겠다.

 

16의 약수로는 

1 2 4 8 16이다.

16의 약수들은 4를 기준으로 대칭적인 쌍을 이룬다.

어짜피 8과 4 16은 2에 의해서 False로 변할것이다.

 

i가 2일때 

2가 True이면

N까지 2의 배수들을 모두 지운다.

 

i가 3일때

3이 True이면

N까지 3의 배수들을 모두 지운다.

 

이런식으로 sqrt(N)까지 돌아주면 배수들이 모두 없어진다.

728x90
반응형
LIST

'백준[파이썬]' 카테고리의 다른 글

[백준/Python] - 1018번 체스판 다시 칠하기  (0) 2025.06.10
[백준/Python] - 13913번 숨바꼭질4  (0) 2025.06.08
[백준/Python] - 2485번 가로수  (1) 2025.06.08
[백준/Python] - 24511번 queuestack  (1) 2025.06.08
[백준/Python] - 1790번 수 이어 쓰기 2  (0) 2025.06.06
'백준[파이썬]' 카테고리의 다른 글
  • [백준/Python] - 1018번 체스판 다시 칠하기
  • [백준/Python] - 13913번 숨바꼭질4
  • [백준/Python] - 2485번 가로수
  • [백준/Python] - 24511번 queuestack
주우우우우우우욱
주우우우우우우욱
    반응형
    250x250
  • 주우우우우우우욱
    주우우우우우우욱의 블로그
    주우우우우우우욱
  • 전체
    오늘
    어제
    • 분류 전체보기 (130) N
      • 백준[파이썬] (57) N
      • Spring (31)
      • CS (1)
      • 자바 (4)
      • 백준[자바] (20)
      • 프로그래머스 (5)
      • 토이프로젝트 (1)
      • SWEA (2)
      • MSA (8) N
      • CI&CD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링 클라우드
    Java
    spring
    스프링 부트와 AWS로 혼자 구현하는 웹 서비스
    MSA
    코딩테스트
    스프링
    백준
    재귀
    AOP
    누적합
    스프링부트
    테스트코드
    SWEA
    자바
    파이썬
    프로그래머스
    JPA
    JWT
    SpringBoot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
주우우우우우우욱
[백준/Python] - 1929번 소수 구하기
상단으로

티스토리툴바