18 lines
313 B
Scheme
18 lines
313 B
Scheme
;;; -*-Scheme-*-
|
|
|
|
(define (identity value) value)
|
|
|
|
(define (gcd a b) (cps-gcd a b identity))
|
|
|
|
(define (cps-gcd a b k)
|
|
(if (= b 0)
|
|
(k a)
|
|
(cps-remainder a b (lambda (v) (cps-gcd b v k)))))
|
|
|
|
(define (cps-remainder n d k)
|
|
(if (< n d)
|
|
(k n)
|
|
(cps-remainder (- n d) d k)))
|
|
|
|
(print (gcd 4 6))
|