728x90
문제
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
![](https://blog.kakaocdn.net/dn/VzXbT/btrpPEqYJ0r/P6GtVj9kvJgIuyS8FwCDXK/img.png)
풀이
left,right=map(int,input().split()) list1=[True]*(right+1) if len(list1)>2: list1[0]=False list1[1]=False for i in range(2,right+1): if list1[i]==True: for n in range(2*i,right+1,i): list1[n]=False list2=[i for i in range(left,right+1) if list1[i]==True] for i in list2: print(i)
![](https://blog.kakaocdn.net/dn/dlYBQD/btrpMQk9kzp/kCaG2YVy6iULECDyXk45C1/img.gif)
에라토스테네스의 체를 이용해서 푸는 문제이다.
에라토스테네스의 체는 기존에 n값이 소수인지 판별할때 2부터 n-1까지 나누어서 판단하는 방식보다 더 효율적인 방식이다. n이 소수인지 판단을 할 때 2의 배수를 전부 지우고 3의 배수를 지우는 식으로 합성수를 모두 지워나간다.
이 과정을 통해 지워지지 않는 수가 소수이다.
이 방법을 통해 시간복잡도를 대폭 줄일 수 있다
'PS' 카테고리의 다른 글
[백준] 1874번 : 스택 수열(스택)- 파이썬[Python] (0) | 2022.01.08 |
---|---|
[백준] 17298번 : 오큰수(스택)- 파이썬[Python] (0) | 2022.01.05 |
[백준] 1002번 : 터렛(두 원의 위치 관계)- 파이썬[Python] (0) | 2022.01.04 |
[백준] 1316번 : 그룹 단어 체커- 파이썬[Python] (0) | 2022.01.03 |
[백준] 1934번 : 최소공배수(유클리드 호제법)- 파이썬[Python] (0) | 2021.12.29 |
댓글