このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/425
#  [1] 授業単元:C  
#  [2] 問題文(含コード&リンク):  
#  この問題では、数列として扱う値はすべて実数での処理を想定する 
#  初項および項数を入力すると、その等差数列の和を求めるプログラムを作成する 
#  ○公式を利用して求める場合→項数(初項+末項)÷2 
#  ○1つずつの項を順次足し合わせる場合→公差=(末項−初項)÷(項数−1) 
#  との2種類の計算方法で値を求めるプログラムを作成しなさい 
#   

公式を利用して等差数列の和を求める(_初項,_末項,_項数,_等差数列の和) :-
        '公式を利用して求める場合→項数(初項+末項)÷2'(_初項,_末項,_項数,_等差数列の和),!.

'1つずつの項を順次足し合わせて等差数列の和を求める'(_初項,_末項,_項数,_等差数列の和) :-
        '1つずつの項を順次足し合わせる場合→公差=(末項‐初項)÷(項数‐1)'(_初項,_末項,_項数,_等差数列の和).

'公式を利用して求める場合→項数(初項+末項)÷2'(_初項,_末項,_項数,_等差数列の和) :-
        _等差数列の和 is ((_初項 + _末項) * _項数) / 2.

'1つずつの項を順次足し合わせる場合→公差=(末項‐初項)÷(項数‐1)'(_初項,_末項,_項数,_等差数列の和) :-
        公差を求める(_初項,_末項,_項数,_公差),
        等差数列の和(1,_項数,_公差,0.0,_等差数列の和).

交差を求める(_初項,_末項,_項数,_公差) :-
        _公差 is (_末項 - _初項) / (_項数 - 1).

等差数列の和(M,_項数,_,_等差数列の和,_等差数列の和) :- M > _項数,!.
等差数列の和(M,_項数,_公差,_等差数列の和の累積値1,_等差数列の和) :-
        _等差数列の和の累積値2 is _等差数列の和の累積値1 + _項差,
        M2 is M + 1,
        等差数列の和(M2,_項数,_公差,_等差数列の和の累積値2,_等差数列の和).