輸出第 k 個質數。多組輸入,k 範圍隱含需預計算足夠多質數。
#include
#include
#include
#include
using namespace std;
const int N = 1000000;
bool prime[N];
void init_prime() {
memset(prime, 1, sizeof(prime));
prime[0] = prime[1] = 0;
double limit = sqrt(N) + 1;
for (int i = 2; i < limit; i++) {
if (prime[i]) {
for (int j = i + i; j < N; j += i)
prime[j] = false;
}
}
}
int main() {
init_prime();
int k;
while (cin >> k) {
int cnt = 0;
for (int i = 0; i < N; i++) {
if (prime[i]) {
if (++cnt == k) { cout << i << endl; break; }
}
}
}
return 0;
}