From c211d9ffde43e4e8f48af44b10317096b1c3e174 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sat, 9 Nov 2013 16:33:52 +0900 Subject: [PATCH] add some math built-in functions: even?, odd?, gcd, lcm --- piclib/built-in.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/piclib/built-in.scm b/piclib/built-in.scm index 5c93ef2b..3d458864 100644 --- a/piclib/built-in.scm +++ b/piclib/built-in.scm @@ -14,6 +14,29 @@ (define (negative? x) (< x 0)) +(define (odd? n) + (= 0 (floor-remainder n 2))) + +(define (even? n) + (= 1 (floor-remainder n 2))) + +(define (gcd n m) + (if (negative? n) + (set! n (- n))) + (if (negative? m) + (set! m (- m))) + (if (> n m) + ((lambda (tmp) + (set! n m) + (set! m tmp)) + n)) + (if (zero? n) + m + (gcd (floor-remainder m n) n))) + +(define (lcm n m) + (/ (* n m) (gcd n m))) + (define (caar p) (car (car p)))