【题意简述】:求在满足题目要求的那个等差序列里的第n个素数是什么。
【分析】:思路很好建立,看代码吧,可能我写的很麻烦,复杂……唉。。
// 236K 94Ms
#include<iostream>
#include<cmath>
using namespace std;
#define N 10000
bool isprime[N];
int prime[N],nprime;//prime[N]用来存储素数,nprime是此时一共有多少素数
void doprime(int n)
{
int i,j;
nprime = 1;
memset(isprime,true,sizeof(isprime));
isprime[1] = 0;
for(i = 2;i<=n;i++)
{
if(isprime[i])
{
prime[nprime++] = i;
for(j = i*i;j<=n;j+=i)
{
isprime[j] = false;
}
}
}
}
bool isp(int n) // 判断是否为素数
{
if(n == 1) return 0;
int i;
int k = (int)sqrt(double(n));
for(i = 1;prime[i]<=k;i++)
if(n%prime[i] == 0)
return 0;
return 1;
}
int main()
{
int a,d,c;
doprime(N);
while(cin>>a>>d>>c)
{
int sum = 0;
if(a == 0&&d == 0&&c == 0)
break;
for(int i = 0;;i++)
{
if(isp(a+d*i))
sum++;
if(sum == c)
{
cout<<a+d*i<<endl;
break;
}
}
}
return 0;
}