Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
80674 sh25_huangse 第n小的质数 C++ 通过 1 MS 360 KB 909 2026-01-04 15:26:54

Tests(1/1):


#include <iostream> #include <vector> #include <cmath> using namespace std; int main() { int n; cin >> n; // 估算一个足够大的上限:第10000个质数约104729,我们取大一些 const int MAX = 110000; // 或 200000 更安全 vector<bool> isPrime(MAX + 1, true); isPrime[0] = isPrime[1] = false; // 0和1不是质数 // 筛法 for (int i = 2; i * i <= MAX; i++) { if (isPrime[i]) { for (int j = i * i; j <= MAX; j += i) { isPrime[j] = false; // 标记i的倍数为非质数 } } } // 收集所有质数 vector<int> primes; for (int i = 2; i <= MAX; i++) { if (isPrime[i]) { primes.push_back(i); } } // 输出第n小的质数(注意n从1开始,数组从0开始) cout << primes[n - 1] << endl; return 0; }


测评信息: