(prime?) 프로시저는 항상 소수를 검사하는 올바른 프로시저라고 하면...

(define (prime-by-fermat-all-number? n)
  (define (iter a)
    (if (< a 2) #t
        (if (= (expmod a n n) a) (iter (- a 1)) #f)))
  (iter (- n 1)))
 
(define (camichael-number? n)
  (and (not (prime? n)) (prime-by-fermat-all-number? n)))

; (camichael-number? 11)   => #f
; (camichael-number? 561)  => #t
; (camichael-number? 1105) => #t
; (camichael-number? 1729) => #t
; (camichael-number? 2465) => #t
; (camichael-number? 2821) => #t
; (camichael-number? 6601) => #t
AND