Friday, August 1, 2008

Even-valued Fibonacci terms summation

Problem #2 of Project Euler

Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed four million.

Analysis
The first 10 terms of Fibonacci sequence are
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

We need to add the even numbers terms
2 + 8 + 34, ...

Solution:

def sumEvenFibonacci( limit ):
    a, b = 1, 1
    sum = 0
    while b < limit:
        if b%2 == 0: sum += b
        a, b = b, a + b
    return sum

Usage:

print sumEvenFibonacci( 4000000 )
If you are interested in listing all the Fibonacci numbers less than a given limit, read this article.