このディレクトリの索引
#  お題:ふたつの自然数の公約数をすべて求める。

'ふたつの自然数の公約数をすべて求める。'(_ひとつめの自然数,_ふたつ目の自然数) :-
        最大公約数をユークリッドの互除法で求める(_ひとつめの自然数,_ふたつ目の自然数,_最大公約数),
        forall((between(1,_最大公約数,_公約数),0 is _最大公約数 mod _公約数),writef('%t ',[_公約数])).

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