poj3006---素数筛法

#include <stdio.h>

#include <stdlib.h>



int tab[1000001];//以后都用宏定义 MAX

int main()//如要将包括1000000在内的打表,数组就开大一个

{

    int a,d,n,i,j;

    tab[0]=0;tab[1]=0;

    for(i=2;i<1000001;i++)

        tab[i]=1;

    for(i=2;i<=1000000;i++)//个人觉得后面一半没必要遍历,因为二倍一定大于1000000

    {

        if(tab[i] == 1)

        {

            for(j=2;j*i<=1000000; j++)

            {

                tab[i*j]= 0;

            }

        }

    }



    while(scanf("%d %d %d",&a,&d,&n) != EOF && n)

    {

        int cout=0;

        for(i=0;cout!=n;i++)

        {

            if(tab[a+i*d] == 1)

                cout++;

        }

        printf("%d\n",a+(i-1)*d);

    }

    return 0;

}
View Code

 

你可能感兴趣的:(poj)