class EbisuConnection::GreatestCommonDivisor
Public Class Methods
calc(set)
click to toggle source
# File lib/ebisu_connection/greatest_common_divisor.rb, line 4 def calc(set) self.new(set).calc end
new(set)
click to toggle source
# File lib/ebisu_connection/greatest_common_divisor.rb, line 9 def initialize(set) @set = set.sort.uniq end
Public Instance Methods
calc()
click to toggle source
# File lib/ebisu_connection/greatest_common_divisor.rb, line 13 def calc n = @set.shift return n if n == 1 || @set.empty? while !@set.empty? m = @set.shift n = gcd_euclid(m, n) end n end
gcd_euclid(m, n)
click to toggle source
# File lib/ebisu_connection/greatest_common_divisor.rb, line 24 def gcd_euclid(m, n) m, n = n, m if m < n while n != 0 work = m % n m = n n = work end m end