每日一九度之 题目1040:Prime Number

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6732

解决:2738

题目描述:

Output the k-th prime number.

输入:

k≤10000

输出:

The k-th prime number.

样例输入:
3
7
样例输出:
5
17

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

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

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

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

 

posted @ 2016-09-20 15:14  Asimple  阅读(308)  评论(0编辑  收藏  举报