トップ 一覧 Farm 検索 ヘルプ RSS ログイン

2006da2.cppの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 #include <iostream>
 #include <cmath>
 #define MAX 1000000
 using namespace std;
 
 void furui(bool sosu[]) // 素数を求めておく
 {
 	sosu[0]=sosu[1]=false; // 0,1は素数じゃない
 	for(int i=2; i<MAX; i++){ // 2以降を素数と仮定しておく
   		sosu[i]=true;
 	}
 	for(int i=2; i <(int)(sqrt((double)MAX)+1); i++){
 		if (sosu[i]) { // 2以上に対し、素数だったら
 			for(int j=i*2; j<MAX; j+=i){
 				sosu[j]=false; // 2倍,3倍,4倍,・・を素数じゃなくする
 			}
 		}
 	}
 }
 
 int main()
 {
   int a, d, n;
   bool sosu[MAX];
 
   furui(sosu);
 
   while (true) {
     cin >> a >> d >> n;
 	if (a==0 && d==0 && n==0) break;
 
     int ct=0;
     for(int i=a; ; i+=d){
       if(sosu[i]){
         ct++;
         if(ct==n){
           cout << i << endl;
           break;
         }
       }
     }
   }
   return 0;
 }