본문 바로가기
알고리즘 테스트/백준

백준 1929 : 소수 구하기 (파이썬)

by codeyaki 2022. 1. 25.
반응형

소수 구하기 성공

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2 초 256 MB 142922 40006 28287 26.791%

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

예제 입력 1

3 16

예제 출력 1

3
5
7
11
13

코드

m,n = map(int,input().split())
isPrime = [True for _ in range(n+1)]
isPrime[0]=isPrime[1]= False
for num in range(len(isPrime)) :
    if isPrime[num] :
        if m<=num and num<=n : print(num)
        for i in range(num*2,len(isPrime),num) :
            isPrime[i] = False

해설

에라토스테네스의 체를 사용하면 된다! 

에라토스테네스의 체는 https://teching.tistory.com/5에 정리해놓았습니다.

 

에라토스테네스의 체(소수 판별 알고리즘)

유명한 소수 개수 찾기 알고리즘 다수의 소수를 찾을때 사용하는 알고리즘으로 하나의 숫자마다 소수인지 판별하는 것보다 효율적이라 많이 사용한다! 소수의 배수는 소수일수가 없다는 점을

teching.tistory.com

에라토스테네스의 체 과정에서 숫자가 m~n의 범위안에 있으면 소수일경우 출력만 해주면 된다

반응형