POJ NOI0105-44 第n小的质数
问题链接:POJ NOI0105-44 第n小的质数。
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 输入一个正整数n,求第n小的质数。
- 输入
- 一个不超过10000的正整数n。
- 输出
- 第n小的质数。
- 样例输入
-
10
- 样例输出
-
29
- 提示
- 来源
问题分析
可以用试除法生成素数并且放入表中。
这样做的好处在于速度会稍微快一些,试除时只需要用素数去试除。
程序说明
(略)
参考链接:(略)
AC的C++语言程序:
#include <iostream> #include <cmath> using namespace std; typedef unsigned long long ULL; const int N = 10000; ULL prime[N+1] = {2, 3}; bool isprime(ULL prime[], int n) { ULL end = (ULL)sqrt(n); int i; for(i=1; prime[i]<=end; i++) if(n % prime[i] == 0) return false; return true; } void genprime(ULL prime[], int n) { int k = 2; for(int i=5; k<n; i+=2) if(isprime(prime, i)) prime[k++] = i; } int main() { int n; cin >> n; if(n > 2) genprime(prime, n); cout << prime[n-1] << endl; return 0; }