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.
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.
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.
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.
(ϕ)
, aproximadamente 1.618, que tiene propiedades matemáticas y estéticas notables. 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))
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.