Esercizio 25

Stato
Discussione chiusa ad ulteriori risposte.

fojeaf

Utente Silver
3 Marzo 2008
235
8
0
95
La sequenza di Fibonacci è definita dalla relazione ricorsiva:

Fn = Fn1 + Fn2, dove F1 = 1 e F2 = 1.
Quindi i primi 12 termini saranno:

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
Il 12esimo termine, F12, è il primo termine di 3 cifre.

Qual è il primo termine nella sequenza di Fibonacci che contiene 1000 cifre?


Beh, alla fine è facile, ho voluto farlo in modo simpatico creandomi un generatore...

Codice:
def fibonacci():
    t1=1
    t2=1
    yield str(t1)
    yield str(t2)
    while True:
        yield str(t1+t2)
        old=t1
        t1=t2
        t2+=old

a=fibonacci()
count=1

while True:
    if len(a.next())==1000:
        print count
        break
    else:
        count+=1
        continue
 
In c...

L'algoritmo dovrebbe essere giusto... però non so se funzioni dato che non ci sono variabili che possano arrivare a valori di 1000 cifre... Sapreste darmi qualche dritta??? XD

Codice:
/* Qual è il primo termine nella sequenza di Fibonacci che contiene 1000 cifre? */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1005

int main()
{
    unsigned int i=1, n, l=0, j=1;
    char str[MAX];
    while(strlen(str) != 1000)
    {
            n = i;
            i += l;
            itoa(i, str, 10);
            l = n;
            j++;
    }
    printf("F%d\n", j);
    return 0;
}
 
se nn erro in C c'era una libreria per gestire numeri particolarmente lunghi, ma cmq nn credo si potesse arrivare a 1000 cifre. A livello di algoritmo mi sembrerebbe anche giusto.
 
Stato
Discussione chiusa ad ulteriori risposte.