Code Review
Compare your solutions
#| BEGIN (Write your solution here) |#
(define (filtered-accumulate combiner null-value term a next b pred)
(define (iter a result)
(cond ((> a b) result)
((pred a) (iter (next a) (combiner result (term a))))
(else (iter (next a) result))))
(iter a null-value))
(define (prime-squares-sum a b)
(filtered-accumulate + 0 square a inc b prime?))
(define (relatively-prime-product n)
(define (n-relatively-prime? i)
(relatively-prime? i n))
(filtered-accumulate * 1 identity 1 inc (- n 1) n-relatively-prime?))
(define (relatively-prime? i n)
(= (gcd i n) 1))
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
(define (prime? n)
(define (has-divisor? d)
(cond ((> (* d d) n) #f)
((= (remainder n d) 0) #t)
(else (has-divisor? (+ d 1)))))
(cond ((< n 2) #f)
(else (not (has-divisor? 2)))))
#| END |#