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;
}
浙公网安备 33010602011771号