동백 // 백준 파이썬 1929번 소수 구하기
2021. 11. 1. 16:50ㆍ컴퓨터 사이언스/Algorithm
반응형
반응형
소수 구하기
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
2 초 | 256 MB | 121092 | 33925 | 24001 | 27.127% |
문제
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())
r = N + 100
# 반복문 range만큼 리스트를 False로 가득 채움
check = [False for _ in range(r)]
# 에라토스테네스의 체를 사용하여 소수를 구해놓기
# 2부터 ~ 범위(r)의 제곱근까지
for i in range(2, int(r**0.8)):
# 만약 check[i]가 False면
if check[i] == False:
# 소수에 해당하지 않는 부분은 True로 체크해줌
# ex) 4, 6, 8 etc....
# i의 2배수부터, 3배수, 4배수
for j in range(2 * i, r , i):
check[j] = True
ans = []
for i in range(M, N + 1):
#만약 i가 2보다 크거나 같으면(1은 소수가 아니기에)
if i >= 2:
# 만약 check[i]가 False라면, 즉 소수라면
if check[i] == False:
ans.append(i)
# ans 크기별로 정렬
ans.sort()
for _ in ans:
print(_)
반응형
'컴퓨터 사이언스 > Algorithm' 카테고리의 다른 글
동백 // 백준 파이썬 10872번 팩토리얼 (0) | 2021.11.01 |
---|---|
동백 // 백준 파이썬 1264번 모음의 개수 (0) | 2021.11.01 |
동백 // 백준 파이썬 1181번 단어 정렬 (0) | 2021.11.01 |
동백 // 백준 파이썬 11653번 소인수분해 (0) | 2021.11.01 |
파이썬 369 게임! (0) | 2021.11.01 |