このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1245853701/423
# [1] 授業単元: 情報処理
# [2] 問題文(含コード&リンク):
#     
#  2つの正整数 m とn とを引数として受け取り、m と n の最大公約数を戻
# り値として返す関数gcd()を作成する。この関数を用いることにより、キー
# ボードから入力した3つの正整数 a, b, c の最大公約数を求めるプログラム
# を書け。
#
# 注意: 最大公約数を計算するには次のような「ユークリッドの互除法」を
# 用いるとよい。
#
# 「ユークリッドの互除法」
#  2つの正の整数 m、n(m>n)の最大公約数を求めるには、m を n で割っ
# て余り r1 を求め、次に n を r1 で割って余り r2 を求め、・・・、この
# ように大きい方を小さい方で割って余りを求め、最後に割り切れたときの除
# 数が求める最大公約数である。
#
# 例)440/380=1余り60 
#     380/60=6余り20    
#     60/20=3 余りなし
#  したがって、440と380の最大公約数は20 

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