컴퓨터/문제 풀기
백준 4948번 베르트랑 공준
솥단디
2019. 5. 20. 22:37
에라토스테네스의 채를 이해하면 금방 풀 수 있다.
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
bool cache[123456 * 2 + 1];
int main() {
vector<int> inputs;
int a;
while (true) { //input
cin >> a;
if (a == 0 || a > 123456) break;
inputs.push_back(a);
}
for (int i = 2; i < 123456 * 2; i++)
cache[i] = true;
for (int i = 2; i < sqrt(123456 * 2); i++) {
if (cache[i]) {
for (int j = i + i; j <= 123456 * 2; j += i) {
cache[j] = false;
}
}
}
for (int i = 0; i < inputs.size(); i++) {
int count = 0;
for (int j = inputs[i]+1; j <= inputs[i]*2; j++) {
if (cache[j]) {
count++;
}
}
cout << count << endl;
}
}