このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1361082416/169
#  http://toro.2ch.net/test/read.cgi/tech/1357748713/775 
#  それで過去問さんにお願いがあるのですか、選りすぐった問題を一日一題のペースで載せていただけないでしょうか。 
#   
#  1: http://toro.2ch.net/test/read.cgi/tech/1357748713/777 
#  2: .http://toro.2ch.net/test/read.cgi/tech/1357748713/874 
#  3.: ../test/read.cgi/tech/1361082416/59 
#  4: .http://pc11.2ch.net/test/read.cgi/tech/1208268461/726 
#  [1] 授業単元:情報実験第一 
#  [2] 問題文:リストの全要素の最大公約数を求める述語 gcdlist を実装 
#  せよ。また、要素数が n であるリストに自然数 n 個を読み込み、関数 
#  gcdlist を用いてそれらの最大公約数を求めるプログラムを作成せよ。 
#  

'リストの全要素の最大公約数を求める述語 gcdlist を実装せよ。
また、要素数が n であるリストに自然数 n 個を読み込み、述語 gcdlist を用いて
それらの最大公約数を求めるプログラムを作成せよ。'(_n,_最大公約数) :-
        '要素数が n であるリストに自然数 n 個を読み込み、gcdlist を用いて
それらの最大公約数を求める'(_n,_最大公約数).

gcdlist([N],N).
gcdlist([N|R],_最大公約数) :-
        gcdlist(R,_最大公約数_2),
        最大公約数をユークリッドの互除法で求める(N,_最大公約数_2,_最大公約数).        

最大公約数をユークリッドの互除法で求める(M,N,N) :-
        0 is M mod N,!.
最大公約数をユークリッドの互除法で求める(M,N,X) :-
        Mod is M mod N,
        最大公約数をユークリッドの互除法で求める(N,Mod,X).



'要素数が n であるリストに自然数 n 個を読み込み、gcdlist を用いて
それらの最大公約数を求める'(_n,_最大公約数) :-
        '要素数が n であるリストに自然数 n 個を読み込み'(_n,_リスト),
        gcdlist(_リスト,_最大公約数).

'要素数が n であるリストに自然数 n 個を読み込み'(_n,_リスト) :-
        '要素数が n であるリスト'(_n,_リスト),
        findall(_自然数,(
                    member(_,_リスト),
                    自然数を得る(_自然数)),
                _リスト).

'要素数が n であるリスト'(_n,_リスト) :-
        length(_リスト,_n).