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