プロジェクトオイラー問45

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2045
Problem 45 「三角数, 五角数, 六角数」 †
3角数かつ5角数かつ6角数という条件を満たす数のうち小さいものから3番目の数を答えよ。
6角数なら自動的に3角数です。
5角数と6角数のうち小さいほうを増加させながら探索するだけです。

penta(N,N1):-!,N1 is N*(3*N-1)//2.
hex(N,N1):-!,N1 is N*(2*N-1).

search(P,H):-
	penta(P,N5),
	hex(H,N6),
	N5=:=N6,
	!,
 	write(N5).
search(P,H):-
	penta(P,N5),
	hex(H,N6),
	N5<N6,
	!,
 	P1 is P+1,
	search(P1,H).
search(P,H):-
	H1 is H+1,
	!,
	search(P,H1).

main:-
	search(165,144).
最終更新:2014年12月05日 14:07