「プロジェクトオイラー問2」の編集履歴(バックアップ)一覧に戻る

プロジェクトオイラー問2 - (2014/02/12 (水) 08:21:57) のソース

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202
*Problem 2 「偶数のフィボナッチ数」 †




フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.



解法
漸化式を使った解法。
再帰で自然に記述できます。

賢い解法はこちらを参照のこと。
http://bach.istc.kobe-u.ac.jp/lect/ProLang/org/euler-002.html


 isAdd(N,0):-N mod 2=:=1,!.
 isAdd(N,N):-!.
 saiki(F1,_,Sum,Sum):-
 	400*10000<F1,
 	!.
 saiki(F1,F2,Sum,Result):-
 	F3 is F1+F2,
 	isAdd(F1,Add),
 	Sum1 is Sum+Add,
 	saiki(F2,F3,Sum1,Result).
 main2:-saiki(0,1,0,Ans),write(Ans).