; Note: the import order matters because we want the trial division prime? not ; the fermat test prime? (load "1.24.txt") ; for expmod (load "1.22.txt") ; for prime? ; (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 (is-carmichael? n) (define (iter a) (cond ((= a n) #t) ((= (expmod a n n) a) (iter (+ a 1))) (else #f))) (and (not (prime? n)) (iter 1))) ; 1 ]=> (filter is-carmichael? (iota 7000)) ; ; ;Value: (561 1105 1729 2465 2821 6601)