このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1248012902/905
#  Write a program to sum the following series: 
#  (これらを合計するプログラムを書きなさい) 
#   
#  1/3 + 3/5 + 7/9 + 9/11 + 11/13+..........+95/97 + 97/99 
#   
#   
#   
#  途中までこんな感じでやったのですがもう何がなんだかさっぱり・・・ 
#   
#  public class Quiz2 { 
#      public static void main(String[] args) { 
#          int sum = 0; 
#          int num = 1; 
#          int den = 3; 
#          for(int x = 0; x < 100; x++ ) { 
#              if(x % 2 == 0) { 
#                  x = num / den; 
#                  sum = sum + x; 
#              } 
#   
#          } 
#          System.out.println("Sum is " + sum); 
#      } 
#   
#  } 
#   
#   
#  よろしくお願いいたします。 
# 
# 

'1/3 + 3/5 + 7/9 + 9/11 + 11/13+..........+95/97 + 97/99 を合計する' :-
        分子ならび(_分子ならび),        
        分母ならび(_分母ならび),
        分子(_分子ならび,_分母ならび,_分子),        
        分母(_分母ならび,_分母),
        _合計 is _分子 / _分母,
        writef('合計は %t です\n',[_合計]).

分子([N],_分母ならび,_分子) :-
        '重複のないならびからNを取り除く'(N,_分母ならび,L),
        全てを掛ける([N|L],_分子),!.
分子([N|R1],_分母ならび,_分子) :-
        '重複のないならびからNを取り除く'(N,_分母ならび,L),
        全てを掛ける(L,_分子_1),
        分子式(R1,_分母ならび,_分子_2),
        _分子 is _分子_1 + _分子_2.

分子ならび(_分子ならび) :-
        findall(N,(
                    for(1,N,97),
                    1 is N mod 2),
                _分子ならび).

分母([X],X) :- !.
分母([A|R],_分母) :-
        分母(R,_分母_1)
        _分母 is  A * _分母_1.

分母ならび(_分母ならび) :-
        findall(N,(
                    for(3,N,99),
                    1 is N mod 2),
                _分母ならび).

'重複のないならびからNを取り除く'(N,L,R) :-
        append(L0,[N|R1],L),
        append(L0,R1,R),!.