Code Review
Compare your solutions
#| BEGIN (Введите свое решение) |#
(define (smallest-divisor n)
(find-divisor n 2))
(define (find-divisor n test-divisor)
(cond [(> (square test-divisor) n) n]
[(divides? test-divisor n) test-divisor]
[else (find-divisor n (+ test-divisor 1))]))
(define (divides? a b)
(= (remainder b a) 0))
(define (prime? n)
(= (smallest-divisor n) n))
(define (filtered-accumulate combiner null-value term a next b filter)
(define (iter a result)
(if (> a b)
result
(iter (next a)
(combiner result
(if (filter a) (term a) null-value)))))
(iter a null-value))
(define (prime-square-sum a b)
(filtered-accumulate + 0 square a inc b prime?))
(define (coprime-product n)
(define (filter k) (= (gcd k n) 1))
(filtered-accumulate * 1 identity 1 inc n filter))
;(prime-square-sum 1 10); -> 88
;(coprime-product 10); -> 189
#| END |#