このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354393458/361
#  お題:自然数Nが与えられたとき、Nの各桁の和をとり結果が一桁でなければ各桁の和
#  をとることを繰り返す。最後の一桁の数を求めよ。
#  例
#  412205725 -> 4+1+2+2+0+5+7+2+5=28
#  28 -> 2+8=10
#  10 -> 1+0=1 

'自然数Nが与えられたとき、Nの各桁の和をとり結果が一桁でなければ各桁の和をとることを繰り返す。最後の一桁の数を求めよ。'(N,N) :-
        N < 10,!.
'自然数Nが与えられたとき、Nの各桁の和をとり結果が一桁でなければ各桁の和をとることを繰り返す。最後の一桁の数を求めよ。'(N,X) :-
        'Nの各桁の和をとり'(N,N_2),
        '自然数Nが与えられたとき、Nの各桁の和をとり結果が一桁でなければ各桁の和をとることを繰り返す。最後の一桁の数を求めよ。'(N_2,X).

'Nの各桁の和をとり'(N,N_2) :-
        findsum(Y,(
                    'Nの各桁'(N,Y)),
                N_2).

'Nの各桁'(N,N) :- N < 10,!.
'Nの各桁'(N,X) :-
        X is N mod 10.
'Nの各桁'(N,X) :-
        N_2 is N // 10,
        'Nの各桁'(N_2,X).