このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301553333/458
#  [1] 授業単元:C言語  
#  [2] 問題文(含コード&リンク):  
#  
#  x>0,y>0という条件でxとyを入力
#  xからy間の数字で2の倍数のみを出力
#  例
#  x=4
#  y=9
#  
#  2の倍数
#  4 8
#  

'x>0,y>0という条件でxとyを入力 xからy間の数字で2の倍数のみを出力' :-
        'xの入力'(_x),
        'yの入力'(_y),
        writef('x=%t\ny=%t\n\n2の倍数\n',[_x,_y]),
        for(_x,N,_y),
        '4の倍数のみを出力'(N),
        N=_y,
        nl.

'xの入力'(_x) :-
        催促付き入力('x=',_x),
        'xの入力診断'(Line,_x),!.
'xの入力'(_x) :- 'xの入力'(_x).

'xの入力診断'(Line,_x) :-
        atom_to_term(Line,_x,_),
        integer(_x),
        _x > 0,!.
'xの入力診断'(Line,_y) :-
        writef('入力された%tからは正の整数が得られませんでした\n',[Line]),
        fail.

'yの入力'(_y) :-
        催促付き入力('y=',Line),
        'yの入力診断'(Line,_y),!.
'yの入力'(_y) :- 'yの入力診断'(_y),!.

'yの入力診断'(Line,_y) :-
        atom_to_term(Line,_y,_),
        integer(_y),
        _y > 0,!.
'yの入力診断'(Line,_) :-
        writef('入力された%tからは正の整数が得られませんでした\n',[Line]),
        fail.

'4の倍数のみを出力'(N) :-
        0 is N mod 4,
        writef('%t ',[N]),!.
'4の倍数のみを出力'(_).