Created
October 14, 2020 12:19
-
-
Save jfacoustic/849202ec3c39a0328925c1db6256f4c3 to your computer and use it in GitHub Desktop.
1.33 SICP (iterative solution)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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