このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/827
#  単元:プログラミング1  
#  問題:ある指定した値までの素数の表を出力するプログラムをかけ。 
#  環境:gcc C言語  
#  期限:11/20まで 
# 
# 

ある指定した値までの素数の表を出力する :-
        ある指定した値(_ある指定した値),
        ある指定した値までの素数の表を出力する(_ある指定した値).

ある指定した値(_ある指定した値) :-
        整数を得る('素数の表の上限値',_ある指定した値 > 0,_ある指定した値),!.

ある指定した値までの素数の表を出力する(_ある指定した値) :-
        findall(N,(
                    between(2,_ある指定した値,N)),
                _2からの整数ならび),
        エラトステネスの篩(_2からの整数ならび,_素数ならび),
        素数ならびを一行に10要素ずつの表として出力する(_素数ならび).

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

素数ならびを一行に10要素ずつの表として出力する(_素数ならび) :-
        length(_10個の素数ならび,10),
        append(_10個の素数ならび,_残り素数ならび,_素数ならび),
        一行出力する(_10個の素数ならび),
        素数ならびを一行に10要素ずつの表として出力する(_残り素数ならび).
素数ならびを一行に10要素ずつの表として出力する(_残った素数ならび) :-
        一行出力する(_残った素数ならび).

一行出力する([]).
一行出力する([A]) :-
        writef('%t\n',[A]),!.
一行出力する([A|R]) :-
        writef('%t,',[A]),
        一行出力する(R).