このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1258158172/907
# [2] 問題文(含コード&リンク): ある整数を入力し,それより小さい素数をすべて表示するプログラムを作成しなさい.

ある整数を入力し,それより小さい素数をすべて表示する :-
        write('整数を入力してください : '),
        get_integer(N),
        N1 is N - 1,
        素数生成(N1,L),
        concat_atom(L,',',S),
        write_formatted('%tより小さいすべての素数は %t です\n',[N,S]).

素数生成(N,X) :-
        findall(M,for(2,M,N),L),
        エラトステネスの篩(L,X).

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

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