문제

풀이
에라토스테네스의 체를 이용해 주어진 범위 내의 소수의 개수를 구하였다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a[246913];
int n;
cin >> n;
while (1) {
int count = 0;
a[0] = 0;
a[1] = 0;
for (int i = 2; i <= 2 * n; i++)
a[i] = 1;
for (int i = 2; i <= int(sqrt(2 * n)); i++) {
for (int j =2; i*j <= 2*n; j++) {
a[i*j] = 0;
}
}
for (int k = n+1; k <= 2 * n; k++) {
if (a[k] == 1)
count++;
}
cout << count << '\n';
cin >> n;
if (n == 0)
break;
}
}
'백준 > 약수, 배수와 소수' 카테고리의 다른 글
13909번: 창문 닫기 [C++] (0) | 2023.03.29 |
---|---|
17103번: 골드바흐 파티션 [C++] (0) | 2023.03.29 |
1929번: 소수 구하기 [C++] (0) | 2023.03.29 |
4134번: 다음 소수 [C++] (0) | 2023.03.29 |
2485번: 가로수 [C++] (0) | 2023.03.29 |