このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/344
#  [1] 授業単元: プログラミング基礎 
#  [2] 問題文(含コード&リンク): 3問 http://ime.nu/ideone.com/kXOZ8 
#  
#   
#  3)帰納を使い、最大公約数を求めよ。

最大公約数(M,N,_最大公約数) :-
        'MがNで割り切れたら'(M,N),
        'Nが最大公約数だ'(N,_最大公約数),!.
最大公約数(M,N,X) :-
        'MをNで割った余りを除数としNを被除数として更に最大公約数を求める'(M,N,X).

'MをNで割った余りを除数としNを被除数として更に最大公約数を求める'(M,N,_最大公約数) :-
        _MをNで割った余り is M mod N,
        最大公約数(N,_MをNで割った余り,_最大公約数).

'MがNで割り切れたら'(M,N) :-
        0 is M mod N.

'Nが最大公約数だ'(N,_最大公約数) :-
        _最大公約数 = N.

%  
%  何故、これで解けているのか。この点が匂ってこない。
%  そういう意味で40点くらいの出来具合。
%