このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328276597/631
#  project eulerの問29(http://ime.nu/odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2029) 
#  
#  Problem 29 †
#  2 =< a =< 5 と 2 =< b =< 5について, a^bを全て考えてみよう:
#  
#  22=4, 23=8, 24=16, 25=32
#  32=9, 33=27, 34=81, 35=243
#  42=16, 43=64, 44=256, 45=1024
#  52=25, 53=125, 54=625, 55=3125
#  これらを小さい順に並べ, 同じ数を除いたとすると, 15個の項を得る:
#  
#  4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125
#  
#  2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?
#  
#  を解きました 
#   
#  Ideoneにアップロードしました 
#  http://ime.nu/ideone.com/GXE1P# 
#   
#   
#  2^16 = (2^2)^8 = (2^4)^4 = (2^8)^2 
#   
#  つまりは、ここでいう16の約数に着目してときましたが、 
#  重複する箇所のチェックに100個ぐらいの漏れがあるみたいなのですが、 
#  何回見てもわかりません。 
#   
#  どこを直せば正しい答えがでるでしょうか。 
#  お願いします。 
# 

'2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(_存在する項の数) :-
        '2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(100,100,[],_存在する項の数).

'2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(1,_,L,X) :-
        length(L,X),!.
'2 =< a =<100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M,1,L,X) :-
        M_1 is M - 1,
        '2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M_1,100,L,X).
'2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M,N,L,X) :-
        Y is M ^ N,
        \+(member(Y,L)),
        N_1 is N - 1,
        '2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M,N_1,[Y|L],X).
'2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M,N,L,X) :-
        N_1 is N - 1,
        '2 =< a =< 100, 2 =< b =< 100 で同じことをしたときいくつの異なる項が存在するか?'(M,N_1,L,X).


%  for/3