このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/957
#  [1] 授業単元:アルゴリズム 
#  [2] 問題文(含コード&リンク):n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。 
#  

'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(_n,X) :-
        findall(N,for(1,N,_n),L),
        concat_atom(L,'*',S),
        atom_to_term(S,_式,_),
        X is _式.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(_n,X) :-
        'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(1,_n,1,X).

'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(N,_n,X,X) :-
        N > _n,!.
'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(N,_n,X_1,X) :-
        X_2 is X_1 * N,
        N_2 is N + 1,
        'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(N_2,_n,X_2,X).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(1,1) :- !.
'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(N,X) :-
        N_1 is N - 1,
        'n!を1の位まで正確に計算するプログラムをかけ。ただし、nは0以上10000未満の整数とする。'(N_1,X_1),
        X is X_1 * N.