Problem2 偶数のフィボナッチ数

プロジェクトオイラーをPrologで解く

問題


% problem 2

solve:-
fibo([2,1],Fibo),
even_sum(Fibo,Sum),
write(Sum).

even_sum([],0):-!.
even_sum([First|Rest],Sum):-
First mod 2 =:= 0,
!,
even_sum(Rest,Sum1),
Sum is First + Sum1.
even_sum([_|Rest],Sum):-
even_sum(Rest,Sum).

fibo([First|Rest],Rest):-
First >= 4000000,
!.
fibo([P1,P2|Rest],Out):-
P0 is P1 + P2,
fibo([P0,P1,P2|Rest],Out).

実行結果:
1 ?- solve.
4613732
true.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>