このディレクトリの索引

# 出典 :: ★★ Java の宿題ここで答えます Part 67 ★★ #921 # 正の数を入力し、入力した整数の1と # その数を除く約数の和を求めて表示するプログラムを作成しなさい。 # 15の約数は、1,3,5,15なので、1と15を除く約数の和は8となる。 # # お願いします。 '正の数を入力し、入力した整数の1と その数を除く約数の和を求めて表示するプログラムを作成しなさい。 15の約数は、1,3,5,15なので、1と15を除く約数の和は8となる。 お願いします。' :- '正の数を入力し、入力した整数の1とその数を除く約数の和を求めて表示する'. '正の数を入力し、入力した整数の1とその数を除く約数の和を求めて表示する' :- 正の数を入力し(_入力した整数), 入力した整数の1とその数を除く約数の和を求めて表示する(_入力した整数,_約数の和). 入力した整数の1とその数を除く約数の和を求めて表示する(_入力した整数,_約数の和) :- 入力した整数の1とその数を除く約数の和を求めて(_入力した整数,_約数の和), 表示する(_約数の和). 入力した整数の1とその数を除く約数の和を求めて(_入力した整数,_約数の和) :- findsum(_約数,( '1とその数を除く約数'(_入力した整数,_約数)),_約数の和). '1とその数を除く約数'(_その数,_約数) :- between(1,_その数,_約数), '1とその数を除く'(_約数,_その数), 約数(_その数,_約数). '1とその数を除く'(_約数,_その数) :- _約数 \== 1, _約数 \==_その数. 約数(_その数,_約数) :- 0 is _その数 mod _約数. 正の数を入力し(_正の数) :- 整数を得る(正の整数,_整数 >= 0,_整数). 表示する(_約数の和) :- writef('%w\n',[_約数の和]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% findsum(_選択項,_項,_合計値) :- findall(_選択項,_項,_値ならび), sum_list(_値ならび,_合計値),!. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 整数を得る(_入力,_催促文ならび,_整数を含む条件,_整数ならび) :- list(_催促文ならび), findall(_整数,( member(_催促文,_催促文ならび), 整数を得る(_入力,_催促文,_整数を含む条件,_整数)),_整数ならび),!. 整数を得る(_入力,_催促文,_整数を含む条件,_整数) :- 催促文の出力(_催促文), 行入力(_入力,Line), '診断: 整数を得る'(Line,_整数を含む条件,_整数),!. 整数を得る(_入力,_催促文,_整数を含む条件,_整数) :- 整数を得る(_入力,_催促文,_整数を含む条件,_整数). '診断: 整数を得る'(end_of_file,_整数を含む条件,end_of_file) :- !. '診断: 整数を得る'('',_,_) :- !,fail. '診断: 整数を得る'(Line,_整数を含む条件,_整数) :- read_term_from_atom(Line,_整数,[]), integer(_整数), '診断: 整数を含む条件'(_整数,_整数を含む条件),!. '診断: 整数を得る'(Line,_整数を含む条件,_整数) :- \+((atom_to_term(Line,_整数,_),integer(_整数))), writef('入力された %t からは数が得られません。再入力をお願いします。\n',[Line]), fail. '診断: 整数を得る'(end_of_file,end_of_file) :- !. '診断: 整数を得る'('',_) :- !,fail. '診断: 整数を含む条件'(_整数,_整数を含む条件) :- call(_整数を含む条件),!. '診断: 整数を含む条件'(_整数,_整数を含む条件) :- writef('入力された %t は %t が偽となります。\n',[_整数,_整数を含む条件]), fail. 整数を得る(_催促文,_整数を含む条件,_整数) :- 整数を得る(user_input,_催促文,_整数を含む条件,_整数). 整数を得る(_催促文,_整数) :- 整数を得る(user_input,_催促文,true,_整数). 整数を得る(_整数) :- 整数を得る(user_input,'',true,_整数). 催促文の出力('') :- !. 催促文の出力(_催促文) :- writef('%tを入力してください : ',[_催促文]). n個の整数を得る(_n,_催促文,_整数ならび) :- length(_整数ならび,_n), findall(_整数,( 部分ならび(_整数ならび,_,_,_何番目,_,_,_,L3), writef('[%t/%t]番目の',[_何番目,_n]), 整数を得る(_催促文,_整数)),_整数ならび). 一行読み込む(_行) :- get_line(_行). 行入力(_入力,_行) :- read_line_to_codes(_入力,_コードならび), atom_codes(_行,_コードならび). get_line(_入力,X) :- get_char(_入力,C), get_line_1(_入力,C,Chars), atom_chars(X,Chars). get_line_1(_入力,'\n',[]) :- !. get_line_1(_入力,end_of_file,[e,n,d,'_',o,f,'_',f,i,l,e]) :- !. get_line_1(_入力,C,[C|R]) :- get_char(_入力,C2), get_line_1(_入力,C2,R). get_line(X) :- get_char(C), get_line_1(C,Chars), atom_chars(X,Chars). get_line_1('\n',[]) :- !. get_line_1(end_of_file,[e,n,d,'_',o,f,'_',f,i,l,e]) :- !. get_line_1(C,[C|R]) :- get_char(C2), get_line_1(C2,R). list([_|_]) :- !. list([].