Problem 1929
소수 구하기
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000)
출력
계산 결과를 소숫점 둘째 자리까지 출력한다.
문제 링크
https://www.acmicpc.net/problem/1929
예제 입력 1
3 16
예제 출력 1
3
5
7
11
13
solve
- 에라토스테네스의 체
- 2부터 n까지의 모든 수를 써놓는다.
- 아직 지워지지 않은 수 중에서 가장 작은 수를 찾는다.
- 그 수는 소수이다.
- 이제 그 수의 배수를 모두 지운다.
코드 설명
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include<iostream>
using namespace std;
int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); bool check[1000001] = { false }; int m, n; cin >> m >> n; check[1] = true; for (int i = 2; i*i <= n; i++) { if(!check[i]) for (int j = i; j*i <= n; j++) { if (i * j > 1000000) break; check[i * j] = true;
} } for (int i = m; i <= n; i++) { if (!check[i]) cout << i << '\n'; }
}
|