#include <iostream>
#include <math.h>
using namespace std;
bool Primes[1000000];
void isPrime()
{
memset(Primes,true,sizeof(Primes));
Primes[1]=false;
for(int m=2;m<1000000;m++)
{
if(Primes[m])
{
for(int j=2;j*m<1000000;j++)
Primes[j*m]=false;
}
}
}
int main()
{
isPrime();
int a,d,n;
int count;
while(true)
{
count=0;
cin>>a>>d>>n;
if(a==0&&d==0&&n==0)
break;
while(true)
{
if(Primes[a])
{
count++;
if(count==n)
{
printf("%d\n",a);
break;
}
}
a+=d;
}
}
return 0;
#include <math.h>
using namespace std;
bool Primes[1000000];
void isPrime()
{
memset(Primes,true,sizeof(Primes));
Primes[1]=false;
for(int m=2;m<1000000;m++)
{
if(Primes[m])
{
for(int j=2;j*m<1000000;j++)
Primes[j*m]=false;
}
}
}
int main()
{
isPrime();
int a,d,n;
int count;
while(true)
{
count=0;
cin>>a>>d>>n;
if(a==0&&d==0&&n==0)
break;
while(true)
{
if(Primes[a])
{
count++;
if(count==n)
{
printf("%d\n",a);
break;
}
}
a+=d;
}
}
return 0;
}
新的筛选素数的方法。