用scheme实现求最大公约数

1785阅读 0评论2006-01-09 libin1983
分类:

;;;求最大公约数gcd(a,b)
;;; 用scheme实现
;;;(gcd 9 12) => (gcd 12 9) => (gcd 9 3) => (gcd 3 0) => 3
(define (gcd a b)
    (if(= b 0)
           a
           (gcd b (mod a b))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; // a, b >= 0
;;; Type gcd ( Type a, Type b)
;;; {  if ( b == 0)
;;;        return a;
;;;    else
;;;        gcd ( b, a % b); 
;;;  }
;;;
;;;// a, b 的最小公倍数 = ( a * b ) / gcd ( a, b )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
附:
1. mod 的定義:
(define ( mod x y )
      (if ( < x y )
           x
           ( mod (- x y) y )))
2. 運行示意圖
上一篇:scheme实现正数求余
下一篇:高尔顿钉板试验模拟