Dirichlet's Theorem on Arithmetic Progressions--POJ 3006

1、题目类型:数论。

2、解题思路:水题。

3、实现方法:

#include<iostream>
using namespace std;
#define Max 1000010

bool prime[Max],flag;
int map[220],cnt;

void BuildTable()
{
int i,j;
prime[
1]=false;
prime[
2]=prime[3]=true;
for(i=2;i<1001;i++)
{
for(j=2;j*i<Max;j++)
{
prime[i
*j]=false;
}
}
}
int main()
{
int a,d,n,tmp;
memset(prime,
1,sizeof(prime));
BuildTable();
while(cin>>a>>d>>n && (a||d||n))
{
cnt
=0;
tmp
=a;
while(cnt!=n)
{
if(prime[tmp])
map[
++cnt]=tmp;
tmp
+=d;
}
cout
<<map[n]<<endl;
}
return 1;
}

 

posted @ 2010-08-18 17:43  勇泽  阅读(186)  评论(0编辑  收藏  举报