Created With

# linkProblem 2 - Even Fibonacci numbers

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.

``euler_002.py1linkdef generate_fibonacci_sequence(term_limit, first_term, second_term):2link    sequence = [first_term, second_term]3link    while True:4link        next_number = sequence[-1] + sequence[-2]5link        if next_number < term_limit:6link            sequence.append(next_number)7link        else:8link            break9link10link    return sequence11link12linkfour_million_sequence = generate_fibonacci_sequence(4000000, 1, 2)13linkprint(sum([n for n in four_million_sequence if n % 2 == 0])) # // @see [List Comprehension](https://www.programiz.com/python-programming/list-comprehension)``

• Let us first start by creating a function that generates a Fibonacci sequence. This accepts three parameters:
• `term_limit`: the maximum number in the sequence
• `first_term`: the first number in the sequence
• `second_term`: the second number in the sequence
• The first and second terms are put into a list `sequence`
• We go in this loop until `next_number` reaches the `term_limit`.
• The next number in the sequence is calculated by adding the last two numbers in the sequence, which is `sequence[-1]` and `sequence[-2]` respectively.
• Check if `next_number` is less than the `term_limit`.
• If it is, then append it to `sequence`.
• If it is not, then stop the loop.
• Running this function will show:
``1linkprint(generate_fibonacci_sequence(10, 0, 1))2link[0, 1, 1, 2, 3, 5, 8]``
• Another example:
``1linkprint(generate_fibonacci_sequence(90, 1, 2))2link[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]``
• Generate a Fibonacci sequence whose values do not exceed four million and that it starts with 1 and 2.
• We get the sum of all even numbers in the sequence by using list comprehension.
This is shorthand for:chevron_right
``1linktotal = 02linkfor n in four_million_sequence:3link  if n % 2 == 0:4link  total += n``