このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/340
#  1C言語学習 
#  2   2つの整数を入力して、その2つの最大公約数を求めよ 
#  3環境 は Linux gcc  C言語です 
#  4期限は 明日までです 
#  5 配列には入っていません 
#   ならったところまでの総合問題です 
#  初心者なので、簡略化しないで頂きたいです お願いします 
# 
# 

'2つの整数を入力して、その2つの最大公約数を求める' :-
        '2つの整数を入力して'(_整数_1,_整数_2),
        'その2つの最大公約数を求める'(_整数_1,_整数_2,_最大公約数),
        最大公約数を表示する(_整数_1,_整数_2,_最大公約数).

'2つの整数を入力して'(_整数_1,_整数_2) :-
        整数を入力して(_整数_1),
        整数を入力して(_整数_2).

整数を入力して(_整数) :-
        write('整数を入力してください : '),
        get_line(Line),
        整数入力診断(Line,_整数),!.
整数を入力して(_整数) :-
        整数を入力して(_整数).

整数入力診断(Line,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),!.
整数入力診断(Line,_整数) :-
        writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'その2つの最大公約数を求める'(_整数,_整数,_整数) :- !.
'その2つの最大公約数を求める'(_整数_1,_整数_2,_最大公約数) :-
        _整数_1 > _整数_2,
        小さい整数を初期値として下降しながら2整数の公約数を捜す(_整数_2,_整数_1,_整数_2,_最大公約数),!.
'その2つの最大公約数を求める'(_整数_1,_整数_2,_最大公約数) :-
        _整数_1 < _整数_2,
        小さい整数を初期値として下降しながら2整数の公約数を捜す(_整数_1,_整数_1,_整数_2,_最大公約数),!.

小さい整数を初期値として下降しながら2整数の公約数を捜す(_初期値,_整数_1,_整数_2,_最大公約数) :-
        for(_初期値,_最大公約数,1),
        0 is _整数_1 mod _最大公約数,
        0 is _整数_2 mod _最大公約数,!.

最大公約数を表示する(_整数_1,_整数_2,_最大公約数) :-
        writef('%t と %t の最大公約数は %t\n',[_整数_1,_整数_2,_最大公約数]).