2013-09-06

Project Euler - Problem 2

Categories: 数学 Lisp
euler_portrait.png

[ PR ]


Problem 2 「偶数のフィボナッチ数」

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

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

数列の項の値が400万より小さい, 偶数値の項の総和を求めよ.

ちょっと最初に戸惑ったのは、偶数値という意味を「偶数項」と読み違えていたのですが、タイトルを見た後で、あぁ、「値が偶数である項」という意味なのかと納得しました。

(defun prob2 (&optional (x1 1) (x2 2) (res 0))
    (if (>= x1 4000000) res
            (prob2 x2 (+ x1 x2) (if (evenp x1) (+ res x1) res))))

(print (prob2)) ; 4613732

ちなみにsbclでの実行速度は、スクリプトでは25ms、ネイティブコンパイルでは11msでした。

数学ガール フェルマーの最終定理 (数学ガールシリーズ 2)
結城 浩
ソフトバンククリエイティブ
売り上げランキング: 43,795

コメントはTwitterアカウントにお願いします。

RECENT POSTS


[ PR ]

.