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

ある指定した個数の素数の表を出力する :-
        整数を得る(ある指定した個数,_ある指定した個数 > 2,_ある指定した個数),
        ある指定した個数の素数の表を出力する(_ある指定した個数).

ある指定した個数の素数の表を出力する(_ある指定した個数) :-
        ある指定した個数の素数ならび(_ある指定した個数,_ある指定した個数の素数ならび),
        素数ならびを一行に10要素ずつの表として出力する(_ある指定した個数の素数ならび).

ある指定した個数の素数ならび(_ある指定した個数,_ある指定した個数の素数ならび) :-
        ある指定した個数の逆順素数ならび(1,-1,_ある指定した個数,[3,2],_逆順素数ならび),
        reverse(_逆順素数ならび,__ある指定した個数の素数ならび),!.

ある指定した個数の逆順素数ならび(N,P_M,_ある指定した個数,L,L) :-
        length(L,_ある指定した個数),!.
ある指定した個数の逆順素数ならび(M_1,_Plus_Minus,_ある指定した個数,L1,L) :-
        素数は6の倍数の前後にしか現れない(M_1,_Plus_Minus,L1,L2,M_2,_Plus_Minus_2),
        ある指定した個数の逆順素数ならび(M_2,_Plus_Minus_2,_ある指定した個数,L2,L).

素数は6の倍数の前後にしか現れない(M,-1,L1,[J|L1],N,1) :-
        N is 6 * M - 1,
        'Nは素数か'(N),!.
素数は6の倍数の前後にしか現れない(M,-1,L1,L1,M,1).
素数は6の倍数の前後にしか現れない(M,1,L1,[J|L1],M_2,-1) :-
        N is 6 * M + 1,
        'Nは素数か'(N),
        M_2 is M + 1,!.
素数は6の倍数の前後にしか現れない(M,1,L1,L1,M_2,-1) :-
        M_2 is M + 1.

'Nは素数か'(N) :-
        N_2 is N // 2,
        between(2,N_2,M),
        0 is N mod M,!,
        fail.
'Nは素数か'(_).

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

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