読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 2 / 偶数のフィボナッチ数

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

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

400万以下の偶数値をとる項の総和を求めよ。

Problem 2 - Project Euler

「400万以下」の条件でループをまわして足し算します。偶数かどうかの判定は EvenQ で。条件にあうように Fibonacci[2] からはじめるのが地味な注意点でしょうか。

追記(2017/04/20)

ループを使わずに解いてみました。意外なことにこちらの方が時間がかかります。元記事の方法だと 0.0000594894 秒でした。

nmax を探す Range をうまくしぼらないとダメみたいです。はじめは何も考えずに Range[10^6] としたみたところ,0.0352766秒かかりました。nmax=33 にあわせて適当に範囲をしぼると速くなりますが,このやり方はちょっとずるいと思います。

nmax を求めるのに While を使うと正当(?)な感じになりますが,やはりはじめの方法よりは時間がかかります。