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

2006da1.cの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 #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;
 }