From d4deb2fc72cd436a874987c67567c104e71c3608 Mon Sep 17 00:00:00 2001
From: rsiddharth <s@ricketyspace.net>
Date: Sat, 17 Jun 2017 13:02:23 +0000
Subject: net: Add module (net ricketyspace sicp one twentyone).

* net/ricketyspace/sicp/one/twentyone.scm: New file.
---
 net/ricketyspace/sicp/one/twentyone.scm | 42 +++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 net/ricketyspace/sicp/one/twentyone.scm

(limited to 'net')

diff --git a/net/ricketyspace/sicp/one/twentyone.scm b/net/ricketyspace/sicp/one/twentyone.scm
new file mode 100644
index 0000000..9d1c94f
--- /dev/null
+++ b/net/ricketyspace/sicp/one/twentyone.scm
@@ -0,0 +1,42 @@
+;;;; Under Creative Commons Attribution-ShareAlike 4.0
+;;;; International. See
+;;;; <https://creativecommons.org/licenses/by-sa/4.0/>.
+
+(define-module (net ricketyspace sicp one twentyone)
+  #:export (sm-divisor-of-199
+            sm-divisor-of-1999
+            sm-divisor-of-19999))
+
+(define (small-divisor n)
+  (find-divisor n 2))
+
+(define (find-divisor n test-divisor)
+  (cond ((> (square test-divisor) n) n)
+        ((divides? test-divisor n) test-divisor)
+        (else (find-divisor n (+ test-divisor 1)))))
+
+(define (divides? a b)
+  (= (remainder b a) 0))
+
+(define (square x)
+  (expt x 2))
+
+(define (sm-divisor-of-199)
+  (small-divisor 199))
+
+(define (sm-divisor-of-1999)
+  (small-divisor 1999))
+
+(define (sm-divisor-of-19999)
+  (small-divisor 19999))
+
+;;;
+;;; scheme@(guile-user)> ,use (net ricketyspace sicp one twentyone)
+;;; ...
+;;; scheme@(guile-user)> (sm-divisor-of-199)
+;;; $3 = 199
+;;; scheme@(guile-user)> (sm-divisor-of-1999)
+;;; $4 = 1999
+;;; scheme@(guile-user)> (sm-divisor-of-19999)
+;;; $5 = 7
+;;;
-- 
cgit v1.2.3