From 67d54f209d28019cc5d8b332706dd9950b56bdc7 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 15 Nov 2004 16:45:03 +0000 Subject: * array.c (rb_ary_update): pedantic check to detect rb_ary_to_ary() to modify the receiver. [ruby-dev:24861] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rational.rb | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'lib/rational.rb') diff --git a/lib/rational.rb b/lib/rational.rb index 2019363ac6..2241004852 100644 --- a/lib/rational.rb +++ b/lib/rational.rb @@ -312,20 +312,22 @@ class Integer return a end - def lcm(int) - a = self.abs - b = int.abs - gcd = a.gcd(b) - (a.div(gcd)) * b + def lcm(other) + if self.zero? or other.zero? + 0 + else + (self.div(self.gcd(other)) * other).abs + end end - def gcdlcm(int) - a = self.abs - b = int.abs - gcd = a.gcd(b) - return gcd, (a.div(gcd)) * b + def gcdlcm(other) + gcd = self.gcd(other) + if self.zero? or other.zero? + [gcd, 0] + else + [gcd, (self.div(gcd) * other).abs] + end end - end class Fixnum -- cgit v1.2.3