poj 3006 Dirichlet's Theorem on Arithmetic Progressions 【素数筛】
说实话,题目很长,但是和真正要思考的东西关系不大。。。
就用了之前的素数筛的模板,控制了一下输入、输出格式就过了,很水的题,没什么技术含量,我好像也只会用暴搜。。。
#include <stdio.h>
#define MAXN 1000002
int prime[MAXN]; //用筛法求素数,1代表不是素数(被筛掉)
int main()
{
//先打出素数表
prime[0]=prime[1]=1; //开始去掉prime[0]和prime[1]
int i,j;
for(i=2;i<MAXN;i++)
{
if(prime[i]==0) //如果prime[i]是素数就把他的倍数都筛掉
{
for(j=2*i;j<MAXN;j+=i)
prime[j]=1;
}
}
int a,d,n;
int count;
while(scanf("%d%d%d",&a,&d,&n))
{
if(a==0 && d==0 && n==0)
break;
count=0;
for(i=a; ;i+=d)
{
if(prime[i]==0)
count++;
if(count==n)
break;
}
printf("%d\n",i);
}
return 0;
}
最后更新:2017-04-03 14:53:40