aboutsummaryrefslogtreecommitdiffstats
path: root/tools/primes.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tools/primes.scm')
-rw-r--r--tools/primes.scm31
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/primes.scm b/tools/primes.scm
new file mode 100644
index 000000000..0772cdcf9
--- /dev/null
+++ b/tools/primes.scm
@@ -0,0 +1,31 @@
+(define (prime? n)
+ (define (smallest-divisor n)
+ (find-divisor n 2))
+ (define (find-divisor n test)
+ (cond ((> (square test) n) n)
+ ((divides? test n) test)
+ (else (find-divisor n (+ test 1)))))
+ (define (divides? a b)
+ (= (remainder b a) 0))
+ (define (square n)
+ (* n n))
+ (= n (smallest-divisor n)))
+
+(define count 0)
+
+
+
+(define (display-prime n)
+ (display n)
+ (display ", ")
+ (cond ((> count 8) (display "\n") (let count 0))
+ (else (define count (+ count 1)))))
+
+
+(define (primes n limit)
+ (if (prime? n)
+ (display-prime n) )
+ (if (< n limit)
+ (primes (+ n 1) limit)) )
+
+(primes 3 5000)