; 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)))))))))