Sum multiples of 3 and 5: Difference between revisions

m
Scheme: Added decomposed version
(Scheme version)
m (Scheme: Added decomposed version)
Line 523:
<lang scheme>
(fold (lambda (x tot) (+ tot (if (or (zero? (remainder x 3)) (zero? (remainder x 5))) x 0))) 0 (iota 1000))
</lang>
 
Output:
<pre>
233168
</pre>
 
Or, more clearly:
 
<lang scheme>
 
(define (fac35? x)
(or (zero? (remainder x 3))
(zero? (remainder x 5))))
 
(define (fac35filt x tot)
(+ tot (if (fac35? x) x 0)))
 
(fold fac35filt 0 (iota 1000))
</lang>