(define (square x) (* x x)) (define (smallest-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 (prime? n) (= (smallest-divisor n) n)) (define (search-for-primes start-num end-num) (search-for-primes-iter start-num end-num (runtime))) (define (search-for-primes-iter start-num end-num start-time) (cond ((< start-num end-num) (begin (prime? start-num) (search-for-primes-iter (+ start-num 1) end-num start-time))) ((= start-num end-num) (begin (prime? start-num) (newline) (display "all over time: ") (display(- (runtime) start-time)) (newline) (- (runtime) start-time))))) ;(search-for-primes 1000000 1000100) ;(search-for-primes 10000000 10000100) ;(search-for-primes 100000000 100000100) (/ (search-for-primes 10000000 10001000) (search-for-primes 1000000 1001000) 1.0) (/ (search-for-primes 100000000 100001000) (search-for-primes 10000000 10001000) 1.0) (/ (search-for-primes 1000000000 1000001000) (search-for-primes 100000000 100001000) 1.0) (/ (search-for-primes 10000000000 10000001000) (search-for-primes 1000000000 1000001000) 1.0)