题目描述
Output the k-th prime number.
输入描述:
k≤10000
输出描述:
The k-th prime number.
示例1
输入
3 7
输出
5 17
解题思路:
题目要求是求第k个素数(k<=10000),这意味着我们在求素数数组的时候要把范围放大到100000,这样保证当k较大的时候我们也求了这个素数。
#include <stdio.h>
int prime[100001]; //用来存储素数
int primeSize; //个数
int mark[100001]; //标志位,1表示非素数
//素数筛法
void init()
{
int i;
for(i = 0; i < 100001; i++) //均未标记
mark[i] = 0;
primeSize = 0;
for(i = 2; i < 100001; i++){ //求出从2到1000000的素数
if(mark[i] == 1)
continue;
prime[primeSize++] = i; //记录该素数
int j;
for(j = i * i; j < 100001; j += i){ //将i的倍数都标记
mark[j] = 1;
}
}
}
int main()
{
int k;
init();
while(scanf("%d", &k) != EOF){
printf("%d\n", prime[k-1]);
}
return 0;
}