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;
}



原文地址:https://www.cnblogs.com/tigerisland/p/7563807.html