summaryrefslogtreecommitdiff
path: root/coding-exercises/1/24.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'coding-exercises/1/24.rkt')
-rw-r--r--coding-exercises/1/24.rkt31
1 files changed, 3 insertions, 28 deletions
diff --git a/coding-exercises/1/24.rkt b/coding-exercises/1/24.rkt
index 9dae66c..969a135 100644
--- a/coding-exercises/1/24.rkt
+++ b/coding-exercises/1/24.rkt
@@ -1,33 +1,8 @@
#lang racket
-(require racket/pretty)
+(require "../../shared/chapter1.rkt")
(require sicp)
-(define (next n)
- (if (= n 2) 3 (+ n 2)))
-
-(define (square x) (* x x))
-
-(define (divides? a b)
- (= (remainder b a) 0))
-
-(define (find-divisor n test-divisor)
- (cond ((> (square test-divisor) n) n)
- ((divides? test-divisor n) test-divisor)
- (else (find-divisor n (next test-divisor)))))
-
-(define (smallest-divisor n)
- (find-divisor n 2))
-
-(define (prime? n)
- (= n (smallest-divisor n)))
-
-(define (expmod base e m)
- (cond
- ((= e 0) 1)
- ((even? e)
- (remainder (square (expmod base (/ e 2) m)) m))
- (else
- (remainder (* base (expmod base (- e 1) m)) m))))
+(define expmod (expmoder (lambda (b e m x) x)))
(define (fermat-test n)
(define (try-it a)
@@ -35,7 +10,7 @@
(try-it (+ 1 (random (- n 1)))))
(define (fast-prime? n times)
- (cond
+ (cond
((= times 0) true)
((fermat-test n) (fast-prime? n (- times 1)))
(else false)))