作者: 機械伯爵
日時: 2008/1/10(16:12)
 う〜ん、ブログにも書かれてたのだけど……

> 最大 greatest 公 common 約数 divisor なので、gcm ではなく gcd です。

 G.C.D.が一般的みたいですが、一応、
 G.C.M.(greatest common measure)
 という用語もあるんですよ(measure = 測る単位という意味で「約数」)
 ……よっぽどマイナーなのかしらん、この言葉。
※あるいは、プログラムのライブラリとかは全てgcdなのかな?

> def gcd(a, b):
>     while b:
>         a, b = b, a % b
>     return a
> 
> の方が私は「簡単」だと思います。いきなり ZeroDivisionError を吐いたり
> しませんし、再帰で限界が来たりもしません。入力に 0 を許さないとか、大
> きな数は扱わない、という*仕様*であれば反対する理由はありませんけど。

 う〜ん、確かにこのほうがわかりやすいですね(タプル展開はPythonの最強兵
器の一つですし)

 ちなみに、私の書いたプロトタイプは、再帰を使った上に条件が3分岐するア
ヤシイモノだったりします。

 私は別に再帰の信奉者じゃないですけど、このタイプの場合は、かなり大きな
数値になっても再帰の限界はきませんので、よほど大丈夫かと。

 それに、0の最大公約数なんてわけのわからんモノが計算できてしまうより、
素直に「ふざけんじゃねーよ、ゼロ以外にきまってんだろっ!」とぶーたれる方
が良かったりしません?(笑)

 /機械伯爵/アルゴリズム事典が書類に埋もれて紛失中/