Probleemstelling
De Fibonacci-reeks start met 1, 1, 2, 3, 5, 8, 13, …
Elke term na de eerste twee wordt gevormd door de som van de twee voorgaande termen.
Bepaal de som van alle even Fibonacci-termen die kleiner zijn dan 4.000.000.
Eerste analyse
Voor deze opgave is een eenvoudige iteratieve aanpak zeer geschikt. We genereren Fibonacci-getallen in een lus en controleren voor elk getal of het even is. Omdat de reeks snel groeit, zijn maar weinig termen nodig om de limiet te overschrijden.
Gekozen programmeeraanpak
We houden twee opeenvolgende Fibonacci-getallen bij en berekenen steeds de volgende term. Als de huidige term even is, voegen we die toe aan de som.
Deze aanpak is helder, compact en volledig voldoende voor deze opgave.
Algoritme
- Initialiseer twee Fibonacci-termen: 1 en 2.
- Herhaal zolang de huidige term kleiner is dan 4.000.000.
- Controleer of de huidige term even is.
- Voeg de even term toe aan de som.
- Bereken de volgende Fibonacci-term.
- Druk de som en de uitvoeringstijd af.
Python-programma
import time
# Start van de tijdsmeting
starttijd = time.perf_counter()
# Bereken de som van alle even Fibonacci-termen kleiner dan 4.000.000
limiet = 4_000_000
vorige = 1
huidige = 2
som = 0
while huidige < limiet:
if huidige % 2 == 0:
som += huidige
vorige, huidige = huidige, vorige + huidige
# Stop de tijdsmeting
eindtijd = time.perf_counter()
uitvoeringstijd = eindtijd - starttijd
# Toon het resultaat
print(f"De gevraagde som is: {som}")
print(f"Uitvoeringstijd: {uitvoeringstijd:.8f} seconden")
Wiskundige oplossing
We gebruiken de conventie
.
De Fibonacci-reeks begint dus als
![]()
Pariteit van Fibonacci-getallen
We schrijven de pariteit van de termen op:
![]()
De pariteit is dus periodiek met periode
. Het patroon herhaalt zich steeds volgens
![]()
Daaruit volgt direct dat
![]()
De even Fibonacci-getallen zijn dus precies
![]()
Bewijs van de identiteit 
We bewijzen deze identiteit met inductie naar
.
Voor
geldt
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{1}F_k = F_1 = 1,\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-5d834daed324214a1fdf40011ecdd19e_l3.png)
en ook
![]()
Neem nu aan dat voor een zekere ![]()
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{n}F_k = F_{n+2}-1.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-abe5a755ae00fed36660e717bddc6b02_l3.png)
Dan volgt
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{n+1}F_k = \left(\sum_{k=1}^{n}F_k\right) + F_{n+1} = (F_{n+2}-1) + F_{n+1}.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-e93c121b1cc4e34ad9a944d710f05bd9_l3.png)
Omdat
, krijgen we
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{n+1}F_k = F_{n+3}-1.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-70ffeeb09be509069b1189710b74ed64_l3.png)
Dus is de formule geldig voor
. Daarmee is de identiteit bewezen.
Bewijs van de identiteit 
We bewijzen ook deze formule met inductie naar
.
Voor
geldt
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{1}F_{3k} = F_3 = 2,\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-246c1c016abc485a7207150b9a51eb57_l3.png)
terwijl
![]()
Neem nu aan dat voor een zekere ![]()
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{m}F_{3k} = \frac{F_{3m+2}-1}{2}.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-4b2c0910790941279e1879821ac05d2a_l3.png)
Dan volgt
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{m+1}F_{3k} = \left(\sum_{k=1}^{m}F_{3k}\right) + F_{3m+3} = \frac{F_{3m+2}-1}{2} + F_{3m+3}.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-72331ba5ef2fae07564bbd59b8944072_l3.png)
Na vereenvoudiging verkrijg je
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{m+1}F_{3k} = \frac{F_{3m+5}-1}{2},\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-8b850bf62ca60cd4ed6fe5c6517cb22d_l3.png)
wat precies de gewenste vorm is voor
. De identiteit is dus bewezen.
Relatie met de totale som
Uit de vorige identiteit volgt nu direct dat
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{m}F_{3k} = \frac12\sum_{k=1}^{3m}F_k.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-42ab5a907c7fac2eb5b6a94d202ae51f_l3.png)
Toepassing op Euler 002
We weten dat
![]()
Dus is het grootste even Fibonacci-getal onder de limiet gelijk aan
, en daarmee is
.
Nu berekenen we
![Rendered by QuickLaTeX.com \[\sum_{k=1}^{11}F_{3k} = \frac{F_{35}-1}{2} = \frac{9\,227\,465-1}{2} = 4\,613\,732.\]](http://www.wiskundemagie.be/wp-content/ql-cache/quicklatex.com-a404537ec288474cef429be6d2b1d8e7_l3.png)
De gevraagde som is dus
![]()
Wiskundige opmerking
Deze oplossing vereist slechts een constante hoeveelheid werk. De pariteitsregel, de inductie en de compacte somformule leveren het antwoord direct op, zonder dat de Fibonacci-getallen één voor één moeten worden gegenereerd. De programmeeroplossing doet dat wel, maar is in dat opzicht meer rekenintensief.
Resultaat
De gevraagde som is 4613732.
Uitvoeringstijd: ongeveer 0,00002408 seconden.
Besluit
Deze aanpak is eenvoudig, begrijpelijk en levert direct het juiste antwoord.