习题2.40
代码如下
;;accumulate代码以前题目中有实现过
(defn flatmap [proc seqs](accumulate concat nil (map proc seqs)))
(defn enumerate-interval [i n](if (> i n) nil (cons i (enumerate-interval (+ i 1) n))))
(defn divisor? [ a b](= (mod b a) 0 ))
(defn square[x] (* x x))
(defn find-divisor [n test-divisor](cond (> (square test-divisor) n) n(divisor? test-divisor n) test-divisor:else (find-divisor n (+ test-divisor 1))))
(defn smallest-divisor [n](find-divisor n 2))
(defn prime? [n] (= n (smallest-divisor n)))
;(accumulate concat
; nil
; (map (fn [i] (map