このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/512
#  [1] 授業単元:C言語基礎実習 
#  [2] 問題文(含コード&リンク):ある整数 a をその数自身を除く約数をすべて足したときに 
#  その合計の値がaと同じになるとき、その数を和の完全数といいます。 
#  512以下の和の完全数を見つけて表示するプログラムを作成しなさい。 
#  出力は以下のようにする事。 
#  6=1+2+3 
#  28=1+2+4+7+14 
#  ・ 
#  ・ 
#  ・ 
#   
#  

'ある整数 a をその数自身を除く約数をすべて足したときに
その合計の値がaと同じになるとき、その数を和の完全数といいます 
512以下の和の完全数を見つけて表示するプログラムを作成しなさい。
出力は以下のようにする事。 
6=1+2+3 
28=1+2+4+7+14 
・ 
・ 
・ ' :-
        between(1,512,_a),
        'ある整数 a をその数自身を除く約数をすべて足したときにその合計の値がaと同じになるとき、その数を和の完全数といいます'(_診断,_a,_約数ならび),
        完全数を表示する(_診断,_a,_約数ならび),
        _a = 512,!.

'ある整数 a をその数自身を除く約数をすべて足したときにその合計の値がaと同じになるとき、その数を和の完全数といいます'(和の完全数,_a,_約数ならび),
        _a_1 is _a - 1,
        findsum(_約数,(
                    between(1,_a_1,_約数),
                    0 is _a mod _約数),
                _a),!.
'ある整数 a をその数自身を除く約数をすべて足したときにその合計の値がaと同じになるとき、その数を和の完全数といいます'(和の完全数ではない,_,_).

完全数を表示する(和の完全数,_a,_約数ならび) :-
        atomic_list_concat(_約数ならび,' + ',_式表現文字列),
        writef('%t=%t\n',[_a,_式表現文字列]),!.
完全数を表示する(和の完全数ではない,_,_).