C#でプロジェクトオイラーを解く(問題2「偶数のフィボナッチ数」)

プロジェクトオイラー
Pocket

どーも、みつおです。

フィボナッチ数を各項で計算してたら、計算時間が凄いことになるよ。

問題

フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.

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

数列の項の値が400万以下の, 偶数値の項の総和を求めよ.

Note:この問題は最近更新されました. お使いのパラメータが正しいかどうか確認してください.

出典:Problem 2

解答

using System;

namespace Problem2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Solve());
            Console.ReadLine();
        }

        private static int Solve()
        {
            int ret = 0;

            //フィボナッチ数の定義 f(n) = f(n-1) + f(n-2)
            int f0 = 0;
            int f1 = 1;
            int f2 = f1 + f0;

            //数列の項(400万)
            int kou = 4000000;

            //項が400万までループ
            while(f2 < kou)
            {
                //偶数値の項の総和
                if (f2 % 2 == 0) ret += f2;

                //フィボナッチ数を更新
                f0 = f1;
                f1 = f2;
                f2 = f1 + f0;
            }

            return ret;
        }
    }
}

 

出力

4613732

 

コメント

タイトルとURLをコピーしました