每日一九度之 题目1040:Prime Number
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6732
解决:2738
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; }