POJ3006-Dirichlet's Theorem on Arithmetic Progressions
素数打表,水题。
#include<stdio.h> #include<string.h> const int Max=1000001; bool isprime[Max]; int main(void) { int i,j,a,d,n; memset(isprime,true,sizeof(isprime)); for(i=3;i<=1000;i+=2) for(j=3;j<=Max/i;j+=2) if(isprime[i]) isprime[i*j]=false; for(i=4;i<=Max;i+=2) isprime[i]=false; isprime[1]=isprime[0]=false; while(scanf("%d%d%d",&a,&d,&n),a||d||n) { int num[250]={0}; j=1; for(i=a;j<=n;i+=d) if(isprime[i]) num[j++]=i; printf("%d\n",num[n]); } return 0; }