<문제>
M이상 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> #include <cstdio> using namespace std; int num[1000001]; int main() { int m, n; scanf("%d%d", &m, &n); num[1] = 1; // 1은 제외하고 2부터 시작하기 위함 // 최초의 소수를 찾고 이것을 제외한 배수를 지워나감 // ex) 소수 2를 찾고 2를 제외한 배수를 전부지움 이후 다음 소수 3을 찾고 그의 배수를 지움 다시 소수를 찾고 반복 for (int i = 2; i <= n; i++) { if (num[i] == 0) { for (int j = 2; n >= i * j; j++) { num[i * j] = 1; } } } for (int i = m; i <= n; i++) { if(num[i] == 0) printf("%d\n", i); } return 0; } | cs |
'C++ 문제풀이' 카테고리의 다른 글
| 1463번 백준(Baekjoon) (0) | 2018.09.30 |
|---|---|
| 1697번 백준(Baekjoon) (0) | 2018.09.24 |
| 1157번 백준(Baekjoon) (0) | 2018.09.06 |
| 8958번 백준(Baekjoon) (0) | 2018.09.05 |
| 1152번 백준(Baekjoon) (0) | 2018.09.04 |