はじめまして。花谷と申します。

rational.rbやmathn.rbの中にあるgcdなのですが、
計算方法が複雑そうに見えるのですが、
なぜそのような形になっているのか御存じの方はいらっしゃいませんか。
下のやり方だと、記述が短く高速だと思うのですが…

class Integer

   def gcd(n)
     m = self.abs
     while n != 0
       m %= n
       m, n = n, m
     end
     m.abs
   end

end