From b7e479c7a68561b1428f671ae77446b171a05e6b Mon Sep 17 00:00:00 2001 From: NaiJi Date: Mon, 7 Sep 2020 17:58:10 +0300 Subject: [PATCH] Add 1.27 --- sicp-ex-1.27.rkt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sicp-ex-1.27.rkt diff --git a/sicp-ex-1.27.rkt b/sicp-ex-1.27.rkt new file mode 100644 index 0000000..212a708 --- /dev/null +++ b/sicp-ex-1.27.rkt @@ -0,0 +1,36 @@ +#lang racket ; needed for true / false + +(define (square n) + (* n n)) + +(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 smaller-n) + (define (try-it a) + (= (expmod a n n) a)) + (cond ((= smaller-n 1) true) + ((try-it smaller-n) (fermat-test n (- smaller-n 1))) + (else false))) + +(define (is-carmichael-prime? n) + (fermat-test n (- n 1))) + +561 +(is-carmichael-prime? 561) +1105 +(is-carmichael-prime? 1105) +1729 +(is-carmichael-prime? 1729) +2465 +(is-carmichael-prime? 2465) +2821 +(is-carmichael-prime? 2821) +6601 +(is-carmichael-prime? 6601) \ No newline at end of file