(define(filtered-accumulate combiner null-value filter-a term a next b)(cond((> a b) null-value)((filter-a a)(combiner(term a)(filtered-accumulate combiner null-value filter-a term (next a) next b)))(else(filtered-accumulate combiner null-value filter-a term (next a) next b))))(define(inc n)(+ n 1))(define(add a1 a2)(+ a1 a2))(define(f a)(+ a 0))(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)(= n (smallest-divisor n)))(define(square x)(* x x))(define(prime-sum a b)(filtered-accumulate add 0 prime? f a inc b))(newline)(display(prime-sum1015))(define multiply
(lambda(a1 a2)(* a1 a2)))(define(coprime n)(define(coprime? a)(=(gcd a n)1))(filtered-accumulate
multiply
1
coprime?
f
1
inc
(- n 1)))(newline)(display(coprime10))
出现了一个错误,就是(define (f a ) (a))改成了(define (f a) (+ a 0)才能过这是因为(a)这样a就是操作数,是一个函数,并不是一个可返回的值。(define (filtered-accumulate combiner null-value filter-a term a next b) (cond ((> a b) null-value)