このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/662
#  次の式を計算するプログラムを作れ。 
#  Sum = 12 + 22 + ... + N2  
#  (注意) Nの値は、キーボードから入力できるようにすること。 
#    Q:\prog> calcsum (注) この例ではプログラムの名前をcalcsumとした。 
#  Input N? 10 Nの値として10を入力する 
#  Sum is 385 12 + 22 + 32 + 42 + 52 + 62 + 72 + 82 + 92 + 102 を計算すると385になる。 
#   
# 

'Nの値をキーボードから入力して Sum = 12 + 22 + ... + N2 を計算する' :-
        'Nの値をキーボードから入力して'(N),
        'Sum = 12 + 22 + ... + N2 を計算する'(1,N,L,0,Sum),
        concat_atom(L,' + ',_加算式文字列),
        writef('%t = %t\n',[Sum,_加算式文字列]),!.

'Sum = 12 + 22 + ... + N2 を計算する'(M,N,[],Sum,Sum) :-
        M > N,!.
'Sum = 12 + 22 + ... + N2 を計算する'(M,N,[E|R],Sum1,Sum) :-
        E is 10 * M * 2,
        Sum2 is Sum1 + E,
        M2 is M + 1,
        'Sum = 12 + 22 + ... + N2 を計算する'(M2,N,R,Sum2,Sum).

'Nの値をキーボードから入力して'(N) :-
        write('限界桁Nを入力してください : '),
        get_line(Line),
        整数入力診断(Line,N),!.
'Nの値をキーボードから入力して'(N) :-
        'Nの値をキーボードから入力して'(N).

整数入力診断(Line,N) :-
        atom_to_term(Line,N,_),
        integer(N),
        N > 0,!.
整数入力診断(Line,N) :-
        writef('入力された%tからは整数Nを得られませんでした。再入力をお願いします\n',[Line]),
        fail.