Skip to content

Instantly share code, notes, and snippets.

@jfacoustic
Created October 14, 2020 12:19
Show Gist options
  • Save jfacoustic/849202ec3c39a0328925c1db6256f4c3 to your computer and use it in GitHub Desktop.
Save jfacoustic/849202ec3c39a0328925c1db6256f4c3 to your computer and use it in GitHub Desktop.
1.33 SICP (iterative solution)
(define (filtered-acc filter combiner null-value term a next b)
(define (iter a result)
(if (> a b)
result
(if (filter a)
(iter (next a) (combiner (term a) result))
(iter (next a) result))))
(iter a null-value))
(define (prime? n)
(define (iter i)
(if (= i 1)
true
(if (= (remainder n i) 0)
false
(iter (- i 1)))))
(iter (floor (sqrt n))))
(define (square x) (* x x))
(define (inc x) (+ x 1))
(define (sum-squares-of-primes a b)
(filtered-acc prime? + 0 square a inc b))
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
(define (relative-prime-gen? n)
(lambda (x) (= (gcd n x) 1)))
(define (identity x) x)
(define (product-relative-primes n)
(filtered-acc (relative-prime-gen? n) * 1 identity 1 inc (- n 1)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment