Greatest Common Divisor in Several Languages

Recursive

def gcd(a, b):
    if b == 0:
        return abs(a)
    else:
        return gcd(b, a % b)
int gcd(int a, int b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (modulo a b))))
(defun gcd1 (a b)
  (if (zerop b)
      a
      (gcd1 b (mod a b))))

Iterative

def gcd_iter(a, b):
    while b:
        a, b = b, a % b
    return abs(a)
int gcd(int a, int b) {
  if (b)
    while ((a %= b) && (b %= a));
  return (a + b);
}
(define (gcd a b)
  (let loop ((x a)
             (y b))
    (if (zero? y)
        x
        (loop y (mod x y)))))
(defun gcd (a b)
  (iter (for x = a then y)
        (for y = b then (mod x y))
        (until (zerop y))
        (finally (return x))))

Author: Breanndán Ó Nualláin <o@uva.nl>

Date: 2026-03-05 Thu 09:42