当前位置: 代码迷 >> 综合 >> poj 3006 Dirichlet's Theorem on Arithmetic Progressions 【素数筛】
  详细解决方案

poj 3006 Dirichlet's Theorem on Arithmetic Progressions 【素数筛】

热度:27   发布时间:2024-01-11 17:06:36.0

说实话,题目很长,但是和真正要思考的东西关系不大。。。

就用了之前的素数筛的模板,控制了一下输入、输出格式就过了,很水的题,没什么技术含量,我好像也只会用暴搜。。。


#include <stdio.h>#define MAXN 1000002int 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;
}


  相关解决方案