和尚特烦恼2
和尚解决了上一次的难题之后。又碰到了新的难题。这次也是关于素数的。一位施主首先把素数编号。最小的素数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 n);
int a[120000],isprime[11000];
int main()
{
int k=1,i,j,n,m;
for(i=0;i<110000;i++)
a[i]=1;
a[0]=0;
a[1]=0;
for(i=2;i<=sqrt(110000);i++)
if(a[i]==1)
for(j=2*i;j<=110000;j+=i)
a[j]=0;
for(i=0;i<=110000;i++)
if(a[i]==1)
{
a[k]=i;
k++;
}
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
scanf("%d",&m);
printf("%d\n",a[m]);
}
}
return 0;
}