このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/642
#  [1] 授業単元:C言語演習 
#  [2] 問題文: 
#  実行ファイル名をmultiとして、multiに続いて2つの正の整数を入力すると、小さい方の整数から大きい方の整数までの積を出力するプログラムを作成せよ。 
#  但し、入力時には小さい方の整数、大きいほうの整数の順で入力されるものとする。 
#  <入力例>$./multi 3 6 
#  <計算結果>360 
#  

program :-
        user_parameters([_引数1,_引数2]),
        小さい方の整数から大きい方の整数までの積を出力する(_引数1,_引数2),

user_parameters(ParametersList) :-
        current_prolog_flag(argv,ParameterList),
        append(_,['--'|UserParameterList],ParameterList).

小さい方の整数から大きい方の整数までの積を出力する(_引数1,_引数2) :-
        atom_number(_引数1,N1),
        atom_number(_引数2,N2),
        小さい方の整数と大きい方の整数(N1,N2,_小さい方の整数,_大きい方の整数),
        小さい方の整数から大きい方の整数までの積を(_小さい方の整数,_大きい方の整数,_積),
        出力する(_積).

小さい方の整数と大きい方の整数(N1,N2,N1,N2) :-
        N1 =< N2.
小さい方の整数と大きい方の整数(N1,N2,N2,N1) :-
        N1 > N2.

小さい方の整数から大きい方の整数までの積を(N,N,N).
小さい方の整数から大きい方の整数までの積を(N,_大きい方の整数,_積) :-
        N < _大きい方の整数,
        N1_2 is N1 + 1,
        小さい方の整数から大きい方の整数までの積を(N_2,_大きい方の整数,_積_2),
        _積 is _積_2 * N.

出力する(_積) :-
        writef('%t\n',[N]).