题目描述
和尚解决了上一次的难题之后。又碰到了新的难题。这次也是关于素数的。一位施主首先把素数编号。最小的素数2编号为1,然后依次增加。施主要要求和尚迅速回答出对应编号的素数。
输入
输入数据有多组,输入数据有多组,每组数据首先输入一个整数n(n<100). 然后有n个正整数m(m<10000).
输出
对于每个正整数编号,输出对应的素数
每个输出占一行
每个输出占一行
样例输入
3
1
2
3
样例输出
2
3
5
源程序:
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int i,j,n,num,flag;
while(scanf("%d",&n) != EOF)
{
for(i = 1; i <= n; i++)
{
scanf("%d",&num);
flag = 0;
for(j = 1; ; j++)
{
if(prime(j) == 1)
flag ++;
if(flag == num)
{
printf("%d\n",j);
break;
}
}
}
}
return 0;
}
int prime(int m)
{
int i,k;
if(m == 1)
return 0;
k = (int)sqrt(m);
for(i = 2; i <= k; i++)
{
if(m % i == 0)
return 0;
}
return 1;
}