- ベストアンサー
3数の最大公約数
2つの整数の最大公約数は分かるのですが、3つの整数の最大公約数は分かりません。 ご教授宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
nGCD = gcd( arg1, arg2 ); nGCD = gcd( arg3, nGCD ); でしょう … ANo1氏の回答の中で forの検索順は逆のようです for ( i = x; i > 1; i-- ) { xk = x % i; yk = y % i; zk = z % i; if ( xk == 0 && yk == 0 && zk == 0 ) break; } kouyaku = i; といった具合でしょう
その他の回答 (4)
- koko_u_
- ベストアンサー率18% (459/2509)
>3つの整数の最大公約数は分かりません。 3 つの整数の最大公約数とは何か。がわからないのか、 3 つの整数の最大公約数の求め方。がわからないのか、 補足にどうぞ。 (すべての回答者が後者だとして回答しているようなので念のために聞いてみました)
お礼
後者の最大公約数の求め方でした。 わざわざご指摘ありがとうございました。申し訳なかったです。
- asuncion
- ベストアンサー率33% (2127/6289)
> 3つの整数の最大公約数は分かりません。 一度に求めようとしてもむずかしいです。 問題を分割して、あなたが今できている2数の最大公約数を求める 問題に落とし込んでください。
お礼
ずっと一度で求めようとしていました。 分割したら解けました。ありがとうございました。
- rabbit_cat
- ベストアンサー率40% (829/2062)
A,B,Cの最大公約数だったら、 AとBの最大公約数Dを求めて、 DとCの最大公約数を求めればいいです。
お礼
なるほど、そうでした。 簡潔で分かりやすい回答ありがとうございます。
- number44
- ベストアンサー率27% (20/72)
#こんな感じで動かないかな? #試してないので動くかわかんないけど・・・ int x=10,y=20,z=30; int xk,yk,zk; int kouyaku=0; int i; #iの最大はx,y,zのどれでもいいが,3つのうち最小値がベスト for(i=1;i<=x;i++){ xk=x%i; yk=y%i; zk=z%i; if(xk==0 && yk==0 && zk==0){ kouyaku=i; } } #kouyakuが最大公約数に
お礼
早い回答ありがとうございました。 ちょうど最小値も出そうと思っていたので非常に助かりました。
お礼
分かりやすいプログラムをもっと噛み砕いてくださり感謝しております。 とても分かりやすい解説でした。