문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의
소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력 1
3 16
예제 출력 1
3
5
7
11
13
#include <iostream>
#define N 1000001
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int m, n;
cin >> m >> n;
bool arr[N];
for(int i=0; i<N; i++) {
arr[i] = true;
}
arr[0] = arr[1] = false;
for(int i=2; (i*i)<N; i++) {
if(arr[i]) {
for(int j=i*2; j<N; j+=i) {
arr[j] = false;
}
}
}
for(int i=m; i<=n; i++) {
if(arr[i]) {
cout << i << '\n';
}
}
return 0;
}
에라토스테네스의 체를 사용하였다.
에라토스테네스의 체에 대한 내용은 밑의 게시글을 참고바랍니다.
2022.01.16 - [ALGORITHM/개념] - 에라토스테네스의 체
'PS > 백준' 카테고리의 다른 글
백준 / 수학 / 1676번 / 팩토리얼 0의 개수 / C++ (0) | 2021.08.05 |
---|---|
백준 / 수학 / 6588번 / 골드바흐의 추측 / C++ (0) | 2021.08.04 |
백준 / 수학 / 1978번 / 소수 찾기 / C++ (0) | 2021.08.01 |
백준 / 수학 / 1934번 / 최소공배수 / C++ (0) | 2021.08.01 |