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;
}
posted @ 2012-08-28 20:51  Yogurt Shen  阅读(201)  评论(0编辑  收藏  举报