Enunciado y demostrado por el matemático belga Edouard Zeckendorf (1901 - 1983), conocido por su trabajo sobre la sucesión de Fibonacci y en especial por el Teorema que lleva su nombre, que dice:
Todo entero positivo se escribe, de manera única,
como suma de números de Fibonacci no consecutivos.
Los números de Fibonacci corresponden a la sucesión recursiva definida por:
f (1) = 1; f (2) = 1 y f (n + 2) = f (n + 1) + f (n) para n > 0.
los primeros treinta números son :
Table[Fibonacci[n], {n, 30}]
{1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418,
317811, 514229, 832040}
El procedimiento para determinar los números de la sucesión de Fibonacci que logran la representación del Teorema de Zeckendorf es: dado el entero positivo n se determina el mayor número de Fibonacci que es menor que n, se realiza la resta y se repite el proceso hasta obtener un número de Fibonacci donde el proceso se detiene.
En Mathematica
Se crea la función ff[n] que nos genera el mayor número de Fibonacci que es menor que n,
ff[n_] := Fibonacci[NestWhile[(# + 1) &, 1, Fibonacci[#] <= n &] - 1]
por ejemplo:
ff[100]
89
ff[144]
144
Ahora, generamos la rutina que genera la lista de números de Fibonacci que nos afirma el Teorema de Zeckendorf.
zz[n_] := n - ff[n]
zeck[n_] :=
Module[{lis}, lis = NestWhileList[zz, n, # != 0 &];
Map[ff, Delete[lis, -1]]]
Algunos ejemplos:
Ejemplo 1:
zeck[33]
{21, 8, 3, 1}
Total[{21, 8, 3, 1}]
33
Ejemplo 2:
zeck[88]
{55, 21, 8, 3, 1}
Total[{55, 21, 8, 3, 1}]
88
Ejemplo 3:
zeck[4180]
{2584, 987, 377, 144, 55, 21, 8, 3, 1}
Total[{2584, 987, 377, 144, 55, 21, 8, 3, 1}]
4180
Para aprender más sobre Mathematica ingrese
aquí sitio de aprendizaje de Wolfram o en mi website
ustamathematica.wixsite.com/basicas