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 ;
}

 

你可能感兴趣的:(progress)