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까지의 모든 수를 써놓는다.
- 아직 지워지지 않은 수 중에서 가장 작은 수를 찾는다.
- 그 수는 소수이다.
- 이제 그 수의 배수를 모두 지운다.
 
코드 설명
| 12
 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';
 }
 
 }
 
 |