2008. 3. 17.

연습문제 1.33

(define (filtered-accumulate predicate combiner null-value term a next b)
  (if (> a b)
      null-value
      (filtered-accumulate predicate
                           combiner
                           (cond
                             ((predicate a) (combiner (term a) null-value))
                             (else null-value))
                                          
                           term
                           (next a)
                           next
                           b)))

(define (square-of-prime a b)
  (filtered-accumulate prime? + 0 square a inc b))

(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (remainder a b))))


(define (seed? n i)
  (= (gcd n i) 1))

(define (product-of-seed n)
  (define (seed? i)
    (= (gcd n i) 1))
  (filtered-accumulate seed? * 1 identity 1 inc (- n 1)))

댓글 없음:

댓글 쓰기