반응형
https://www.acmicpc.net/problem/4948
1 ~ N까지 소수 개수의 누적합을 저장해주었습니다.
#include <cstdio>
#include <cstring>
#define MAX 123456 * 2 + 1
int n, dp[MAX];
int main() {
memset(dp, -1, sizeof(dp));
dp[1] = 0;
for (int i = 2; i <= MAX; i++) {
if (dp[i] == -1) {
dp[i] = 1;
for (int j = i + i; j <= MAX; j += i) dp[j] = 0;
}
dp[i] += dp[i - 1];
}
while (1) {
scanf("%d", &n);
if (n == 0) break;
printf("%d\n", dp[2 * n] - dp[n]);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1535 : 안녕 (0) | 2021.11.19 |
---|---|
백준 1451 : 직사각형으로 나누기 (0) | 2021.11.19 |
백준 13305 : 주유소 (0) | 2021.11.19 |
백준 17140 : 이차원 배열과 연산 (0) | 2021.11.19 |
백준 19952 : 인성 문제 있어?? (0) | 2021.11.19 |