このディレクトリの索引
#  
#  最大公約数をユークリッドの互除法で求める。
#  

最大公約数をユークリッドの互除法で求める(M,N,_最大公約数) :-
        ユークリッドの互除法は割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(M,N,_最大公約数).

ユークリッドの互除法は割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(_被除数,_除数,_最大公約数) :-
        _剰余 is _被除数 mod _除数,
        割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(_被除数,_除数,_剰余,_最大公約数).

割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(_被除数,_除数,0,_最大公約数) :-
        割り切れたらその時の除数が最大公約数だ(_除数,_最大公約数),!.
割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(_被除数,_除数,_剰余,_最大公約数) :-
        '割り切れなかったら除数を被除数、剰余を除数に置き換えて計算を続ける'(_被除数,_除数,_剰余,_最大公約数).

割り切れたらその時の除数が最大公約数だ(_除数,_最大公約数) :-
        _除数 = _最大公約数.

'割り切れなかったら除数を被除数、剰余を除数に置き換えて計算を続ける'(_被除数,_除数,_剰余,_最大公約数) :-
        ユークリッドの互除法は割り切れるまで除数だった数を被除数に剰余だった数を除数として割ることを繰り返す(_除数,_剰余,_最大公約数).