このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1276873238/652
#  問題 
#  整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。 
#  例 
#  n=15のとき 
#  1+2+3+4+5+6+7+8+9+(1+0)+(1+1)+(1+2)+(1+3)+(1+4)+(1+5) = 66 
# 
# 

'整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(0,0) :- !.
'整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(N,_集計値) :-
        一桁ずつ加算する(N,S_1),
        N_1 is N - 1,
        '整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(N_1,S_2),
        _集計値 is S_1 + S_2.

一桁ずつ加算する(N,N) :-
        N < 10,!.
一桁ずつ加算する(N,S) :-
        D is N // 10,
        M is N mod 10,
        一桁ずつ加算する(M,S1),
        S is S1 + D.