题目地址
AC代码
#include <iostream>
using namespace std;
int listOfPrime[1000001];
int main() {
int a,b,c;
listOfPrime[0]=listOfPrime[1]=1;
for (long long int j = 2; j < 1000001; ++j) {
if(listOfPrime[j]==0){
for (long long int i = j*2; i < 1000001; i+=j) {
listOfPrime[i]=1;
}
}
}
while(cin>>a>>b>>c){
if(a==0&&b==0&&c==0)break;
long long int sum = 0;
int counter = 0;
for (int i = 0; counter!=c; ++i) {
sum=a+i*b;
if(listOfPrime[sum]==0)counter++;
}
cout<<sum<<endl;
}
return 0;
}
题解和思路
这道题模拟就可以,按照题目的意思把等差数列中的每一个值先算出来,然后丢进素数表里判断一下是不是素数,如果是素数,则计数器加一,再根据for循环的条件来判断当前计数器的值是不是我们要的N的值来确定是否输出答案就行了