(define (expmod base exp m) (cond ((= exp 0) 1) ((even? exp) (remainder (square (expmod base (/ exp 2) m)) m)) (else (remainder (* base (expmod base (- exp 1) m)) m)))) (define (test-carmichael n) (define (test a n) (= (expmod a n n) a)) (define (go a n) (cond ((= a n) #t) ((test a n) (go (+ a 1) n)) (else #f))) (go 1 n))