このディレクトリの索引

# Python の宿題ここで答えます Part 2 #20 # ある自然数nについて,nの約数のうち,nより小さいものの和がnと一致するとき,nは完全数と呼ばれる. # # たとえば,6の約数は 1, 2, 3, 6 であり, # # 6 = 1 + 2 + 3 # # なので,6は完全数である. # # 1000以下のすべての完全数を表示するプログラムを作成せよ. # '1000以下のすべての完全数を表示する' :- forall( '1000以下のすべての完全数を'(_完全数), 表示する(_完全数)). '1000以下のすべての完全数を'(_完全数) :- between(1,1000,_完全数), 'ある自然数nについて,nの約数のうち,nより小さいものの和がnと一致するとき,nは完全数と呼ばれる.'(_完全数). 表示する(_完全数) :- writef('%w ',[_完全数]). 'ある自然数nについて,nの約数のうち,nより小さいものの和がnと一致するとき,nは完全数と呼ばれる.'(_n) :- nより小さいnの約数ならび(_n,_nより小さいnの約数ならび), sum_list(_nより小さいnの約数ならび,_n). nより小さいnの約数ならび(_n,_nより小さいnの約数ならび) :- findall(_nより小さいnの約数,( nより小さいnの約数(_n,_nより小さいnの約数)),_nより小さいnの約数ならび). nより小さいnの約数(_n,_nより小さいnの約数) :- between(1,_n,_nより小さいnの約数), _nより小さいnの約数 < _n, '約数であるから_nは_nより小さい約数で割りきれる'(_n,_nより小さいnの約数). '約数であるから_nは_nより小さい約数で割りきれる'(_n,_nより小さいnの約数) :- 0 is _n mod _nより小さいnの約数.