このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/100
#  [1] 授業単元:C言語  
#  [2] 問題文  
#  整数n(>=1)を入力し,nの約数の個数を返す関数int divisor(int)を用いてnが素数かどう  
#  かを判定し,その結果を画面表示するプログラムを作成せよ.  
#  

'整数n(>=1)を入力し,nの約数の個数を返す述語を用いてnが素数かどうか判定する' :-
        '整数n(>=1)を入力し'(_n),
        約数の個数(_n,_約数の個数),
        素数かどうか判定する(_約数の個数,_判定),
        writef('%tは%t\n',[_n,_判定]).

'整数n(>=1)を入力し'(_n) :-
        write('整数(>=1)を入力して下さい : '),
        get_line(Line),
        '整数n(>=1)を入力診断'(Line,_n),!.
'整数n(>=1)を入力し'(_n) :-
        '整数n(>=1)を入力し'(_n).

'整数n(>=1)を入力診断'(Line,_n) :-
        atom_to_term(Line,_n,_),
        integer(_n),
        _n >= 1,!.
'整数n(>=1)を入力診断'(Line,_n) :-
        writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'約数の個数'(_数,_約数の個数) :-
        _数_1 is _数 - 1,
        count((  for(1,N,_数_1),
                 0 is _数 mod N)),
             _約数の個数).

素数かどうか判定する(_約数の個数,素数です) :-
        _約数の個数 =< 2,!.
素数かどうか判定する(_約数の個数,素数ではない).