Fe2+ です。
At Wed, 9 Jan 2008 17:37:01 +0900 (JST),
機械伯爵 wrote:
>
> えと、互除法による最大公約数をPythonで書こうとすると、
>
> gcm = lambda a, b: b if (a % b == 0) else gcm(b, (a % b))
>
> で、良いと思うのだけど、これ以上簡単になったかしらん?
>
> ※コレ↓は反則
> gcm = lambda a, b: b if not a % b else gcm(b, (a % b))
最大 greatest 公 common 約数 divisor なので、gcm ではなく gcd です。
最小 least 公 common 倍数 multiple なら lcm ですが。
def gcd(a, b):
while b:
a, b = b, a % b
return a
の方が私は「簡単」だと思います。いきなり ZeroDivisionError を吐いたり
しませんし、再帰で限界が来たりもしません。入力に 0 を許さないとか、大
きな数は扱わない、という*仕様*であれば反対する理由はありませんけど。
--
MATSUI "Fe2+" Tetsushi