このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1136788500/446
#  宿題、ではないんですが 
#   
#  一次不定方程式、例えば12x+18y=6のxとyを求めるプログラムをユークリッドの互除法を使って 
#  作成してください。 
#  よろしくお願いします。 
# 
# 

'一次不定方程式、例えばAx+By=Cのxとyを求めるプログラムをユークリッドの互除法を使って求める'(A,B,C,X,Y) :-
        A1 is A // C,B1 is B // C,
        あまりが1になるまでユークリッドの互除法を適用(A1,B1,L),
        append(_,[D,E],L),
        X is 1 + E,
        Y is (-1) * (1 + D + D * E).

あまりが1になるまでユークリッドの互除法を適用(A,B,[D]) :-
        1 is A mod B,
        D is A // B.
あまりが1になるまでユークリッドの互除法を適用(A,B,[D|R]) :-
        C is A mod B,
        D is A // B,
        あまりが1になるまでユークリッドの互除法を適用(B,C,R).