昨天的筛法玩的还意犹未尽,今天再来一发和质数有关的题。
题意:给定a,d,n。a每次加d,求这个数列里的第n个质数。
思路很清晰……打完素数表一切so easy。
调的时候留心一下。for循环不是短路的,第二个条件不满足第三条语句还是执行了。
没再出岔子,1次AC。
#include<stdio.h>
_Bool prime[1000000];
void findprime()
{
long i,j;
prime[0] = 0;
prime[1] = 0;
for(i=2;i<1000000;i++)
prime[i]=1;
for (i=2; i<1000000; i++)
if (prime[i])
for (j=i+i; j<1000000; j+=i)
prime[j] = 0;
}
int main()
{
int a,d,n,i;
long num;
findprime();
while(scanf("%d %d %d",&a,&d,&n)==3 && a!=0 && d!=0 && n!=0)
{
for(i=0,num=a;i<n;num+=d)
if(prime[num])
i++;
printf("%ld\n",num-d);
}
return 0;
}
//最近玩了玩RSS,相见恨晚。用Feedly很不错,就是安卓客户端偶尔不太稳定。