时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6732

解决:2738

<dl> <dt> 题目描述: </dt> <dd>

Output the k-th prime number.

</dd> </dl> <dl> <dt> 输入: </dt> <dd>

k≤10000

</dd> </dl> <dl> <dt> 输出: </dt> <dd>

The k-th prime number.

</dd> </dl> <dl> <dt> 样例输入: </dt> <dd>
3
7
</dd> </dl> <dl> <dt> 样例输出: </dt> <dd>
5
17
</dd> </dl>

虽然是英文题,但是题目意思很明确。

所以直接枚举出所有的素数,然后输入一个输出一个结果就可以了。

应该有更加简单高效的算法,欢迎指教!

//Asimple
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <map>
#include <string>
#include <queue>
#define INF 100000
using namespace std;
const int maxn = 10000;
typedef long long ll;
int n, len;
ll a[maxn];

bool prime(int n){
    for(int i=2; i*i<=n; i++){
        if( n % i == 0 ){
            return false;
        }
    }
    return true;
}

void get_prime(){
    a[len] = 2;
    len ++;
    for(ll i=3; ; i++){
        if( prime(i) ){
            a[len] = i;
            len ++;
        }
        if( len == maxn) break;
    }
}

int main(){
    len = 0;
    get_prime();
    while( ~scanf("%d",&n) ){
        printf("%ld\n",a[n-1]);
    }
    return 0;
}