- 382 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:06:16 ]
- >>381 訂正
% Prolog '異なる自然数p,qと、もう一つの自然数dを入力する。d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、最後にその個数を表示する' :- '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d), 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,L), '表示し'(L), 最後にその個数を表示する(L),!. 表示し(L) :- concat_atom(L,' ',S), write_formatted('%t\n',[S]),!. 最後にその個数を表示する(L) :- length(L,_その個数), write_formatted('合計で%t個あります\n',[_その個数]),!. '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d) :- get_line(Line), split(Line,[' '],[_p,_q,_d]),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,_kならび) :- findall(N,for(0,N,10),L1), findall(_k,(for(0,_k,_d),順列(L1,2,[_m,_n]),'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k)),_kならび),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k) :- _k is _p * _m + _q * _n, _k =< _d,!.
|

|