; Rollo Silver's gcd:
(lambda (a b)
  (let L1 ((j 1)(a a)(b b)) (if (and (even? a) (even? b)) (L1 (* j 2) (/ a 2) (/ b 2))
  (let ((p (lambda (a) (let L ((a a)) (if (even? a) (L (/ a 2)) a)))))
  (let L ((a (p a))(b (p b))) (let ((c (abs (- a b))))
  (if (= 0 c) (* a j) (L (min a b) (p c)))))))))