このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/338
#  急ぎなのですが 
#  1 考えるC 
#  2 整数m(mが2以上)を入力し、m以下の素数を全て表示するプログラムを作れ。 
#  3 環境はlinux gcc C言語です 
#   
#  4期限は今日の夕方まで 
#  5進んだところは 
#  配列はまだやっていません 
#  総合問題みたいらしいです 
#   
#  ぐぐればすぐサンプルがあるらしいのですが、それを使わずにかけといっていました 
#  (簡単にかけるらしいので) 
#   
#  よろしくお願いします 
#   

'整数m(mが2以上)を入力し、m以下の素数を全て表示する' :-
        '整数m(mが2以上)を入力し'(_m),
        'm以下の素数を全て表示する'(_m).

'整数m(mが2以上)を入力し'(_m) :-
        write('整数m(mが2以上)を入力してください : '),
        get_line(Line),
        '整数m(mが2以上)を入力診断'(Line,_m),!.
'整数m(mが2以上)を入力し'(_m) :-
        '整数m(mが2以上)を入力し'(_m).

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

'm以下の素数を全て表示する'(_m) :-
        findall(N,(
                    for(2,N,_m)),
                L1),
        エラトステネスの篩(L1,L2),
        append(_,[_素数|R],L2),
        writef('%t\n',[_素数]),
        R = [].

エラトステネスの篩([],[]) :- !.
エラトステネスの篩([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).