Project Euler 2
問題
フィボナッチ数列の 以下の偶数項の総和を と置いて を求める。
記号
[ 表記 ]:[ 返り型 ]:[ 説明 ]
:整数:切り捨て除算、 を超えない最大の整数
:整数: を超えない最大の整数、ガウス関数
解法
()を から始まるフィボナッチ数列とする。つまり漸化式 で定義され、一般項の式は
で与えられる。この偶奇は
- :奇、:奇 :偶、
- :奇、:偶 :奇、
- :偶、:奇 :奇、
で循環するので に関する総和を取ればいいことが分かる。 は
で、その での総和は
となる。これ以上の簡約化は知らない。
後は が を超えない最大の を探せば良い。 に注意して とおくと、 が 以下になる は
を満たすことが必要になる。右辺が に依存しているのが厄介だが、とりあえず
を考えよう。この時、
であり、同様に が分かる。 が偶数ならば、
となる。 が奇数ならば だが、 は整数で なので が分かる。また、この時 となるので、 は が を超えない最大の を与える。
よって求める総和は
近似手法
がフィボナッチ数として取り得ないだろう値( とか)の場合、 をもう少し簡単に見積もれる。つまり から で、 と取るとほぼほぼ正しい値が得られる。//
解
より
この場合は近似手法でも が得られる。