Project Euler #2 - Números Fibonacci par

Solución al segundo problema del Project Euler, suma de todos los términos pares en la secuencia de Fibonacci, implementado en Go y Python.

cover
Ilustración por @nicol.s.art

Historia de Fibonacci

La famosa secuencia de Fibonacci tiene sus raíces en el siglo XII con Leonardo de Pisa, también conocido como Fibonacci. Este matemático italiano introdujo la secuencia en su libro “Liber Abaci” (1202), donde la utilizó para modelar un problema ficticio sobre la reproducción de conejos. Aunque la secuencia ya era conocida en matemáticas indias y árabes, fue Fibonacci quien la popularizó en Europa y la integró en la cultura matemática occidental.

Definición

La secuencia comienza con los números 0 y 1, y cada número subsiguiente es la suma de los dos números anteriores: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, y así sucesivamente.

F(0)=0F(0) = 0
F(1)=1F(1) = 1
F(n)=F(n1)+F(n2)F(n) = F(n-1) + F(n-2)

Aplicaciones y Presencia en la Naturaleza

La secuencia de Fibonacci no solo es fascinante en términos matemáticos, sino que también se encuentra en diversos fenómenos naturales. Por ejemplo, se observa en la disposición de las hojas en las plantas, en la espiral de las conchas de caracol, en la estructura de las galaxias espirales, y en muchas otras formas en la naturaleza. Esta presencia sugiere que la secuencia de Fibonacci está relacionada con patrones de crecimiento eficientes y óptimos en la naturaleza.

Otros números relacionados con fibonacci

  • Números de Lucas : Los números de Lucas son una secuencia relacionada que comienza con 2 y 1 en lugar de 0 y 1, pero siguen la misma regla de suma.
  • Ratio Áureo : La relación entre dos números sucesivos en la secuencia de Fibonacci se aproxima al número áureo (ϕ), aproximadamente 1.618, que tiene propiedades matemáticas y estéticas notables.

Fibonacci Par

Cada nuevo término en la secuencia de Fibonacci se genera sumando los dos términos anteriores. Al comenzar con 1 y 2, los primeros 10 términos serán:

1,2,3,5,8,13,21,34,55,891,2,3,5,8,13,21,34,55,89…

Encuentra la suma de todos los términos pares en la secuencia de Fibonacci cuyo valor no exceda los cuatro millones.

El objetivo es encontrar la suma de todos los números fibonacci menores a 4 millones

Solución en Python

def even_fibonacci_sum(limit):
    # Inicialización de los dos primeros términos pares y de la suma total
    a, b = 2, 8
    total_sum = a
    
    # Bucle que se ejecuta mientras el segundo término sea menor o igual al límite
    while b <= limit:
        # Sumar el término par actual a la suma total
        total_sum += b
        # Actualizar los términos: el nuevo a es el antiguo b, y el nuevo b se calcula como 4 * b + a
        a, b = b, 4 * b + a
    
    # Retornar la suma total de los términos pares
    return total_sum

# Ejecución principal
if __name__ == "__main__":
    print(even_fibonacci_sum(4000000))

Solución en Go

package exercises

// FibonacciSum calcula la suma de los números de Fibonacci pares menores o iguales a un límite dado.
func FibonacciSum(limit int) int {
	// Se inicializan los primeros dos términos de la secuencia de Fibonacci modificada.
	a, b := 2, 8
	// La suma se inicializa con el primer número par, que es 2.
	sum := 2

	// El bucle se ejecuta mientras el término actual de Fibonacci no supere el límite.
	for b <= limit {
		// Se suma el término actual (que es par) a la suma total.
		sum += b
		// Se actualizan los términos de Fibonacci utilizando la fórmula para números pares.
		a, b = b, 4*b+a
	}

	// Se retorna la suma total de los números de Fibonacci pares menores o iguales al límite.
	return sum
}

En la sucesión de Fibonacci, cada tercer término es par . La fórmula de actualización 4 * b + a se basa en una propiedad derivada de la sucesión de Fibonacci para generar directamente los términos pares sin necesidad de calcular los intermedios.

Si te gusta el contenido o tienes dudas/sugerencias escríbeme a @josephsilva_21