Module:Shared: Difference between revisions

Replace GCD function with an implementation of the Euclidean algorithm, so that fewer iterations occur when numbers differ greatly in magnitude
(first attempt at p.tablesEqual)
(Replace GCD function with an implementation of the Euclidean algorithm, so that fewer iterations occur when numbers differ greatly in magnitude)
Line 270: Line 270:
end
end


-- Euclid's Greatest Common Divisor algorithm
-- Euclidean Greatest Common Divisor algorithm
function p.gcd(a, b)
function p.gcd(a, b)
   if(a == b) then
   if b ~= 0 then
     return a
     return p.gcd(b, a % b)
   else
   else
     if(a > b) then
     return math.abs(a)
      if b == 0 then
        return a
      else
        return p.gcd(a - b, b)
      end
    else
      if a == 0 then
        return b
      else
        return p.gcd(a, b - a)
      end
    end
   end
   end
end
end