Code Review
Compare your solutions
#| BEGIN (Введите свое решение) |#
(define (square x) (* x x))
(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 (fermat-test n a)
(= (expmod a n n) a))
(define (carmichael-test test-n)
(define (fast-prime? n a)
(cond ((= a 1) #t)
((fermat-test n a) (fast-prime? n (- a 1)))
(else #f)))
(fast-prime? test-n (- test-n 1)))
#| END |#