Tuesday, October 22, 2019

SICP in Clojure: Chapter 1, Exercise 27

This is my Clojure solution to Chapter 1, Exercise 27:

(ns sicp.ch1.ex27
  (:require [sicp.ch1.ex25 :as sicp-ch1-ex25]))

(defn fermat-test
  [n a]
  (= (sicp-ch1-ex25/expmod a n n) a))

(defn fermat-full-test
  [n]
  (every? (partial fermat-test n) (range n)))

(def carmichael-numbers [561 1105 1729 2465 2821 6601])

(every? fermat-full-test carmichael-numbers) ; => true -- but not
                                        ; prime numbers!

No comments: