「prolog勉強プロジェクトオイラー1~10」の編集履歴(バックアップ)一覧に戻る

prolog勉強プロジェクトオイラー1~10 - (2013/07/08 (月) 02:45:13) の編集履歴(バックアップ)


プロジェクトオイラーの問題をPrologで解く。
問い1
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%201
数式で解くのが正しいけれどまあいいか。

mod_n(N,15,N):-0=:=N mod 15,!.
mod_n(N,5,N):-0=:=N mod 5,!.
mod_n(N,3,N):-0=:=N mod 3,!.
mod_n(_,_,0).

calc(1000,Sum):-write(Sum).
calc(N,Sum):-mod_n(N,_,Add),Sum1 is Sum+Add,N1 is N+1,calc(N1,Sum1).


問い2
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202
まあ少しくらいの工夫はする。
マクローリン展開を使う方法は私には理解できなかった。

fina(_,_,F,Sum):-F>=4000000,write(Sum),!.
fina(A,B,F,Sum):-B1 is 2*A+3*B,
A1 is F,F1 is A1+2*B1,Sum1 is Sum+F,fina(A1,B1,F1,Sum1).