diff options
Diffstat (limited to 'tools/primes.scm')
-rw-r--r-- | tools/primes.scm | 31 |
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) |