Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 0 and 1, the first 12 terms will be:
0, 1, 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.
In [2]:
def fib(max_num):
sequence = []
x = 0
while x >= 0:
if len(sequence) == 0 or len(sequence) == 1: #start fibonnaci sequence with 0 and 1
sequence.append(x)
x += 1
elif sequence[x-1] >= max_num: # since we are incrementing x by 1 each time, if the number at x-1 is greater than "max-num" (in this case 4 million) we remove it and stop the loop
sequence.remove(sequence[x-1])
break
else:
sequence.append(sequence[x-1] + sequence[x-2]) # after we have 0, 1, we make the rest of the fibonnaci numbers by adding the two before it
x += 1
return sequence # this function will return the sequence
#--- summing it up: the first function takes a max number (4 million) and generated a fibonnaci sequence with values that do not exceed your max number
def fib_sum(sequence): # this function takes a fibonnaci sequence (like the one generated in the function above)
even_fib = []
for numbers in sequence:
if numbers % 2 == 0: # if the numbers in the sequence divided 2 has a remained of zero, it's even
even_fib.append(numbers) # and is appened to my list "even_fib"
return sum(even_fib) # the function then returns the sum of the list
print(fib_sum(fib(4000000)))
In [14]:
# This cell will be used for grading, leave it at the end of the notebook.
In [ ]:
In [ ]: