【POJ 3306】【素数筛选】Dirichlet's Theorem on Arithmetic Progressions

看看就懂了,用一个素数先标记了所有的素数

#include "stdio.h"
#include "string.h"
int prime[1000000];
void f()//素数筛选法。。。这么多次做题好像每次都有啊。
{
	memset(prime,1,sizeof(prime)); 
    prime[1] = prime[0] = 0;
    for(int i = 2; i<=500000; i++)
    {
        if(prime[i])
        {
            for(int j = i+i; j<1000000; j+=i)
            {
                prime[j] = 0;
            }
        }
    }
}
int main(int argc, char const *argv[])
{
	int l,n,m,flag;
	f();
	while(~scanf("%d %d %d",&l,&n,&m) && (l+m+n))
	{
		flag=0;
		for (int i = 0,j=1;m!=0; i++)
		{
			if(prime[l+i*n])
			{
				m--;
			}
			if(m==0)
				flag=i;
		}
		printf("%d\n",l+flag*n);
	}
	return 0;
}


你可能感兴趣的:(c,水题)