「プロジェクトオイラー問2」の編集履歴(バックアップ)一覧はこちら
「プロジェクトオイラー問2」(2014/02/12 (水) 08:21:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Problem 2 「偶数のフィボナッチ数」 †
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.
解法
漸化式を使った解法。
再帰で自然に記述できます。
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).
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).