这是一道比较水的题目,题意大概是说:给你三个数a,b,n,求出数列a,a+b,a+2b,a+3b,a+4b,a+5b……中第n个素数,还好题目一有说最后的结果会小于10^6次方,所以无论是用普通方法求素数还是使用素数表都可以AC。
不说了直接上代码吧:
#include<stdio.h>
#define N 1000001
int i,j,m,n,s,a[N];
int main()
{
a[0]=0,a[1]=0;
for(i=2;i<N;i++)a[i]=1;
for(i=2;i<N;i++)
if(a[i])
for(j=i+i;j<N;j+=i)
a[j]=0;
while(scanf("%d%d%d",&m,&n,&s),m||n||s)
{
for(;;)
{
if(a[m])
s--;
if(!s)
break;
m+=n;
}
printf("%d\n",m);
}
return 0;
}
还有以下几种代码:
#include<stdio.h>
#include<string.h>
bool isPrime[1000001];
int main()
{
int a,b,n;
int i,j,k,count;
memset(isPrime,true,sizeof(isPrime));
isPrime[1]=false;
for(i=2;i<=1000000;i++)
{
if(isPrime[i])
for(j=i+i;j<=1000000;j+=i)isPrime[j]=false;
}
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(!a&&!b&&!n) return 0;
count=0;
for(i=a;i<=1000000;i+=b)
if(isPrime[i])
{
count++;
if(count==n) break;
}
printf("%d\n",i);
}
return 0;
}
这个为筛选法求素数!!