(define goldbachs-conjecture \\ begin with 4 and the list of primes < 4 -> (goldbachs-conjecture-help 4 [3 2])) (define goldbachs-conjecture-help N Primes -> N where (not (sum-of-two? Primes N)) N Primes -> (if (prime? (+ N 1)) (goldbachs-conjecture-help (+ N 2) [(+ 1 N) | Primes]) (goldbachs-conjecture-help (+ N 2) Primes))) (define sum-of-two? \\ no primes left? then return false [ ] _ -> false \\ If the X + any other prime = N return true [X | Primes] N -> true where (x+prime=n X [X | Primes] N) \* no? then recurse. *\ [_ | Primes] N -> (sum-of-two? Primes N)) (define x+prime=n \\ no primes left, return false _ [ ] _ -> false \\ X + the first prime = N?, so return true X [Prime | _] N -> true where (= (+ X Prime) N) \\ recurse and try the other primes X [_ | Primes] N -> (x+prime=n X Primes N))