Код Ревью
Сравни свои решения
#| BEGIN (Введите свое решение) |#
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence) (accumulate op initial (cdr sequence)))))
(define (flatmap proc seq)
(accumulate append '() (map proc seq)))
(define (enumerate-interval low high)
(if (> low high)
'()
(cons low (enumerate-interval (+ low 1) high))))
(define (prime? n)
(define (divides? a b) (= (remainder b a) 0))
(define (smallest-divisor n)
(define (find-divisor n test-divisor)
(cond ((> (* test-divisor test-divisor) n) n)
((divides? test-divisor n) test-divisor)
(else (find-divisor n (+ test-divisor 1)))))
(find-divisor n 2))
(= n (smallest-divisor n)))
(define (unique-pairs n)
(flatmap (lambda (i)
(map (lambda (j) (list i j))
(enumerate-interval 1 (- i 1))))
(enumerate-interval 2 n)))
(define (prime-sum-pairs n)
(filter (lambda (pair) (prime? (+ (car pair) (cadr pair))))
(unique-pairs n)))
#| END |#