#include <stdio.h>
#include <math.h>
// xが素数かどうか判定する関数(素数のとき1、じゃないとき0)
int sosu(int x)
{
int i,flag;
if(x<2){ // マイナス、0,1は素数じゃない
return 0;
}else if(x==2){ // 2は素数
return 1;
}else if(x%2==0){ // 2の倍数は素数じゃない
return 0;
}else{
flag=1; // フラグを立てる
for(i=3; i<=sqrt(x); i+=2){ // 割れるかどうかはルートnまで調べればよい
if(x%i==0){
flag=0; // 割れる数があったらフラグ消す
break;
}
}
if(flag){ // フラグがたっていたら素数
return 1;
}else{
return 0;
}
}
}
main()
{
int a,d,n,ct,p;
unsigned long i;
while(1){
scanf("%d %d %d", &a, &d, &n);
if(a==0 && d==0 && n==0) break;
// ct:素数の数をカウント
// i:数列の数(初期値a, dずつ増えていく)
// 終わる条件はカウントがn未満のとき
ct=0;
for(i=a; ct<n; i+=d){
if(sosu(i)){ // iが素数だったらカウント
ct++;
p=i;
}
}
printf("%d\n", p);
}
return 0;
}