このディレクトリの索引
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つの最大公約数を求める'(_整数_1,_整数_2,_最大公約数) :-
        最大公約数をユークリッドの互除法で求める(_整数_1,_整数_2,_最大公約数).

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

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