1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rational.rb (Integer::gcd): replaced by gcd4 in

[ruby-core:07390].  [ruby-core:07377]

* eval.c: initial value for block_unique must be 1.
  [ruby-talk:180420]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2006-02-20 00:55:49 +00:00
parent fd50b3cdde
commit c519ca9500
3 changed files with 18 additions and 30 deletions

View file

@ -436,36 +436,14 @@ class Integer
# The result is positive, no matter the sign of the arguments.
#
def gcd(n)
m = self.abs
n = n.abs
return n if m == 0
return m if n == 0
b = 0
while n[0] == 0 && m[0] == 0
b += 1; n >>= 1; m >>= 1
min = self.abs
max = other.abs
while min > 0
tmp = min
min = max % min
max = tmp
end
m >>= 1 while m[0] == 0
n >>= 1 while n[0] == 0
while m != n
m, n = n, m if n > m
m -= n; m >>= 1 while m[0] == 0
end
m << b
end
def gcd2(int)
a = self.abs
b = int.abs
a, b = b, a if a < b
while b != 0
void, a = a.divmod(b)
a, b = b, a
end
return a
max
end
#