Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
My solution using Scheme:
(define (remainder x y) (- x (* y (truncate (/ x y)))))
(define (fib a b limit)
(if (< a limit)
(if (= 0 (remainder a 2))
(+ a (fib b (+ a b) limit))
(fib b (+ a b) limit))
0
)
)
(display (fib 1 2 4000000))
We can abuse the fact that the next even fibonacci number is the previous one times phi cubed to create a much cleaner solution:
(define (euler2 n [start 2] [sum 0])
(if (>= start n)
sum
(euler2 n (inexact->exact (round (* start (expt (/ (+ 1 (sqrt 5)) 2) 3)))) (+ start sum))))
(euler2 4000000)