;1.23
(define smallest-divisor
  (lambda (n)
    (find-divisor n 2)))
(define find-divisor
  (lambda (n test-divisor)
    (cond
      ((> (square test-divisor) n) n)
      ((divides? test-divisor n) test-divisor)
      (else (find-divisor n (next test-divisor))))))
(define next
  (lambda (n)
    (if (= n 2)
        3
        (+ n 2))))
(define divides?
  (lambda (a b)
    (= (remainder b a) 0)))

(define prime?
  (lambda (n)
    (= n (smallest-divisor n))))



;1.22
(define search-for-primes
  (lambda (beg end)
    (cond
      [(>= beg end)
       #f]
      [(even? beg)
       (search-for-primes (+ beg 1) end)]
      [else
        (begin
          (if (prime? beg)
              (display " *** ")
              (search-for-primes (+ beg 2) end)))])))

 

Posted on 2013-03-06 22:43  ASOCS  阅读(121)  评论(0)    收藏  举报