(define (filter-accumulate filter combiner null-value term a next b)
;de parameter filter bepaalt welke termen wegvallen
(define (iter pos acc)
(cond ((> pos b) acc)
((filter pos) (iter (next pos) acc))
(else (iter (next pos) (combiner acc (term pos)))))
(iter a null-value))
(define (product-gcd n)
(filter-accumulate
(lambda (i) (<> (gcd i n) 1))
*
1
(lambda (x) x)
1
(lambda (x) (+ x 1))
n))