2つの正の整数 a, b の最大公約数(GCD)を出力してください。
古代ギリシャから伝わるユークリッドの互除法を使うと簡単に求められます:
a を b で割った余りを r とするa ← b、b ← r と置きかえるb が 0 になったときの a が答え1行に a と b が空白区切りで与えられます。最大公約数を1行で出力してください。
| 入力 | 出力 |
|---|---|
12 18 | 6 |
17 5 | 1(互いに素) |
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
// ここで a が最大公約数
余りを使ってどんどん小さくしていくのがポイントです。