; recursion and iteration

(define (gcd-r m n) ; recursive
  (if (zero? n) m
    (gcd-r n (modulo m n))))

(define (gcd-i m n) ; iterative
  (while (positive? n)
    (let ((t (modulo m n)))
      (set! m n)
      (set! n t)))
  m)

(display (gcd-r 35 28)) (newline)
(display (gcd-i 35 28)) (newline)

(do ((m 1 (+ m 1))) ((= m 100))
  (do ((n 1 (+ n 1))) ((= n 100))
    (when (not (= (gcd-r m n) (gcd-i m n)))
      (display m) (display " ") (display n) (newline))))