exercise-1.21-find-smallest-divisor.rkt 484 B

1234567891011121314151617181920212223242526
  1. #lang racket
  2. (define (divides? a b)
  3. (= (remainder b a) 0))
  4. (define (square x) (* x x))
  5. (define (smallest-divisor n) (find-divisor n 2))
  6. (define (find-divisor n test-divisor)
  7. (cond
  8. ((> (square test-divisor) n) n)
  9. ((divides? test-divisor n) test-divisor)
  10. (else (find-divisor n (+ test-divisor 1)))))
  11. (define (prime? n)
  12. (= n (smallest-divisor n)))
  13. (smallest-divisor 199)
  14. (smallest-divisor 1999)
  15. (smallest-divisor 19999)
  16. (prime? 199)
  17. (prime? 1999)
  18. (prime? 19999)