Eccoci di nuovo insieme per affrontare il problema n° 2 di Project Euler. Andiamo ad esaminare il problema...
Progetto Eulero Problema 2
"Ogni nuovo termine della sequenza di Fibonacci è generato sommando i due termini precedenti. Iniziando con 1 e 2, i primi 10 termini saranno:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Trova la somma di tutti i termini di valore pari che non superano i quattro milioni."
Per risolvere questo problema dobbiamo prima di tutto avere chiaro cosa sia la successione di Fibonacci.
Prendiamo la sequenza del problema:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Partendo da 1 e 2 possiamo creare ogni nuovo numero della sequenza semplicemente sommando i due numeri precedenti in questo modo:
1+2 = 3
1,2,3
2+3 = 5
1,2,3,5
3+5 = 8
1,2,3,5,8
...Detto questo possiamo semplicemente dire che A + B = C
Ecco un esempio di codice che stampa la sequenza di Fibonacci:
a = 1
b = 2
c = a + b
b = 2
c = a + b
while a <= 10:
print a,
a = c - a
b = c
c = a + b
L'output del codice sarà quindi 1,2,3,5,8 in quanto abbiamo deciso per ora di creare solo numeri minori di 10 (while a <= 10).
Il problema però ci chiede di trovare "la somma di tutti i termini di valore pari che non superano i quattro milioni", quindi dobbiamo aggiungere un metodo che ci permetta di filtrare solo i numeri pari e sommarli.
Modifichiamo il codice...
a = 1
b = 2
c = a + b
somma = 0 #Somma dei numeri pari trovati
b = 2
c = a + b
somma = 0 #Somma dei numeri pari trovati
while a <= 4000000:
if a%2 == 0: #Se a è pari aggiunge a alla somma
somma += a
a = c - a
b = c
c = a + b
Certamente non è il codice piu efficente e veloce ma trova comunque la soluzione al problema. Adesso tocca a voi trovare la vostra soluzione!
Ci vediamo per il problema n° 3 !
--------------------------------------------------------------------------------------------------------------------------
Nessun commento:
Posta un commento