Skip to main content

Proyecto Euler: solución problema 2

Posted in

Enunciado: cada nuevo término en la serie de Fibonacci es generado sumándole a éste los dos términos anteriores. Iniciando con los dos primeros términos de la serie en 1 y 2, los 10 primeros términos serán:

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

Hallar la suma de todos los términos pares de la serie los cuales no excedan los cuatro millones.

Para solucionar este problema hay varias aproximaciones, dos de estas aproximaciones son particularmente hermosas desde el punto de vista matemático y programación debido a su recursividad: por ejemplo, es posible generar solo los números pares de la serie analizando la relación que hay entre los términos. Yo me aproximé por la mas común. Como en el caso anterior, no publico la respuesta, pero si el algoritmo que escribí para llegar a ésta.

/* projecteuler.net -  solución problema 2.
 *
 * Enunciado: cada nuevo término en la serie de Fibonacci es generado
 * sumándole a éste los dos términos anteriores. Iniciando con los
 * dos primeros términos de la serie en 1 y 2, los 10 primeros términos
 * serán:
 *
 *                     1,2,3,5,8,13,21,34,55,89
 *
 * Hallar la suma de todos los términos pares de la serie los cuales no
 * excedan los cuatro millones.
 *
 * Autor: Juan Felipe Muñoz Fernández
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Euler_Problema_2
{
    class Program
    {
        static void Main(string[] args)
        {
            uint primero = 1;
            uint segundo = 2;
            uint siguiente = 0;
            uint suma = 0;
            while (siguiente < 4000000)
            {
                if (siguiente % 2 == 0)
                    suma = suma + siguiente;
                siguiente = primero + segundo;
                primero = segundo;
                segundo = siguiente;
            }
            Console.WriteLine("La suma de los términos pares en la serie es: {0}", suma + 2);
            Console.ReadKey();
        }
    }
}