#include <stdio.h> 

 #include <math.h> 


 bool isPrime(int num) { 

     if (1 == num) { 

         return false; 

     } 

     for (int i = 2; i <= sqrt(num); i++) { 

         if (num % i == 0) { 

             return false; 

         } 

     } 

     return true; 

 } 


 int getNthPrime(int num, int d, int n) { 

     int primeNum = 0; 

     for (int i = 0; primeNum <= n; i++) { 

         if (isPrime(num + d*i)) { 

             primeNum++; 

             if (primeNum == n) { 

                 printf("%d\n", num + d*i); 

                 return num + d*i; 

             } 

         } 

     } 

 } 


 int main() { 

     while(1) { 

         int num = 0, d = 0, n = 0; 

         scanf("%d %d %d", &num, &d, &n); 

         if (0 == num && 0 == d && 0 == n) { 

             break; 

         } 

         getNthPrime(num, d, n); 

     } 
}

没想到暴力法也accept了。 原来想先筛出一张大素数表。g++ AC.

注意:

       1.编译带 -lm 才能用sqrt

       2. prime检测也是常用的, 熟练并记住.

数论啥时侯再看看, 一开始还以为能用数论的什么定理来简化,但看了圈discuss, 貌似没有.