a, b = int(input()), int(input())
while a > 0 and b > 0: # aまたはbが0の場合 ⇒ もう一方がGCD
a, b = b, a % b # (a, b) のgcdは (b, a % b) のgcdと同じ
d = b if a == 0 else a # aが0ならbがGCD、bが0ならaがGCD
print('gcd:', d)
このアルゴリズムは、紀元前 300 年に書かれたユークリッドの著書で最初に言及されています。
いくつかアルゴリズムのシミュレーションを見てみましょう:
a = 8, b = 12
a = 12, b = 8
a = 8, b = 4
a = 4, b = 0
break ⇒ GCD = 4
a = 54, b = 24
a = 24, b = 6
a = 6, b = 0
break ⇒ GCD = 6
a = 17, b = 16
a = 16, b = 1
a = 1, b = 0
break ⇒ GCD = 1
入力
The only line of the input contains two integers a and b (0 ≤ a, b ≤ ).
出力
The program should print the greatest common divisor of a and b.