このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/835
#  ある整数型のカラムnumがあって、  
#  その内容が、100以下の素数であるレコードだけ抜き出すために  
#  SQLを簡潔に書く方法はありますでしょうか  
#   
#  where num=2 or num=3 or num=5 (略) num=89 or num=97  
#  と書いてもいいんですが、  
#  たとえば  
#  where num={2,3,5,7,11,(略),83,89,97}  
#  のようなまとめた書き方があったら教えてください  
# 
# 

'ある整数型のカラムがあって、その内容が、100以下の素数であるレコードだけ抜き出す'(_カラム,_値) :-

        'n以下の素数'(100,_素数ならび),
        テーブル(_カラム,_値),
        member(_カラム,_100以下の素数ならび).

'n以下の素数'(_n以下,_素数ならび) :-
        findall(_数,(
                    between(2,_n以下,_数)),
                _2以上_n以下の数ならび),
        エラトステネスの篩(_2以上_n以下の数ならび,_素数ならび).

エラトステネスの篩([],[]) :- !.
エラトステネスの篩([A|R1],[A|R2]) :-
        エラトステネスの篩(A,R1,L),
        エラトステネスの篩(L,R2).

エラトステネスの篩(_,[],[]) :-!.
エラトステネスの篩(N,[A|R1],R2) :-
        0 is A mod N,
        エラトステネスの篩(N,R1,R2),!.
エラトステネスの篩(N,[A|R1],[A|R2]) :-
        エラトステネスの篩(N,R1,R2).