이 문제는 소수를 찾는 것이 핵심이였다. 나는 우선 300000까지의 소수를 모두 구한 다음 for을 통해 소수의 갯수를 구하는 방법을 사용하였다.
소수 구하는 방법은 에라토스테네스의 체를 사용하였다.
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
#include <iostream>
#include <algorithm>
using namespace std;
int dp[300000];
int main() {
// 소수 구하기
dp[0] = 1, dp[1] = 1;
for (int i = 2; i < 300000; i++) {
if (dp[i] == 1)continue;
for (int j = i * 2; j < 300000; j += i) {
dp[j] = 1;
}
}
while (1) {
int n;
cin >> n;
if (n == 0)break;
int ans = 0;
for (int i = n + 1; i <= 2 * n; i++) {
if (dp[i] == 0)ans++;
}
cout << ans << '\n';
}
}
'백준' 카테고리의 다른 글
백준 15651 - N과 M(3) (0) | 2021.05.15 |
---|---|
백준 1012 - 유기농 배추 (0) | 2021.01.19 |
백준 1193 - 분수찾기 (0) | 2021.01.18 |
백준 11054 - 가장 긴 바이토닉 부분 수열 (0) | 2021.01.18 |
백준 1655 - 가운데를 말해요 (0) | 2021.01.15 |