# ユークリッドの互除法 [ユークリッドの互除法 - Wikipedia](https://ja.wikipedia.org/wiki/ユークリッドの互除法) 最大公約数 (GCD: Greatest Common Divisor) を効率よく計算する方法。 ``` GCD(300, 780) 780 / 300 = 2 ... 180 300 / 180 = 1 ... 120 180 / 120 = 1 ... 60 120 / 60 = 2 GCD(300, 780) = 60 ``` Go による実装。 ```go package main func GCD(a, b int) int { if b == 0 { return a } return GCD(b, a%b) } func main() { println(GCD(300, 780)) } ``` 計算量は $O(\log{a})$ 。 (ざっくり半、半、... になっていく)