このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/425
#  [1]C言語 プログラミング 
#  [2]http://ime.nu/codepad.org/UrZpvr24 
#  制御構造について。 
#  文字制限のためコードでお願いします。 
#  [3]Windows 7 
#  [3.1]vs2010 
#  [3.2]C言語 
#  [4]明日 午前中まで 
#  [5]現在制御構造について学んでいます。 
#  配列・ポインタ・関数はまだです。 
# 
#  /*問題1
#  n>=m>=2を満たす整数nとmをキーボードから入力するとm進数でnを出力するプログラムを
#  作成せよ。ただしm<=10としていい。表示は逆順でも良い。
#  
#  問題2
#  2<=n<=10000を満たす整数nをキーボードから入力すると2以上n以下の素数とその個数を表示する
#  プログラムを作成せよ。ただし最後の行に素数の個数のみを表示しその他の各行には
#  最後の一行を除いてちょうど10個の素数を表示しなければならない。
#  例:n=50
#  2 3 5 7 11 13 17 19 23 29
#  31 37 41 43 47
#  15
#  
#  問題3
#  絶対値が1未満の実数xと正の整数nが入力されるまで繰り返してキーボードからxとnを入力し
#  xとnが正しく入力されたら関数log(1+x)の近似値を次の式で計算して表示するプログラム。
#  
#  log(x+1)=nΣi=1     (-1)^i+1 / i      のx^i   
#  
#  例:n=100 x=0.5とすると0.405465と表示される。*/

'2<=n<=10000を満たす整数nをキーボードから入力すると2以上n以下の素数とその個数を表示する。ただし最後の行に素数の個数のみを表示しその他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない。' :-
        '2<=n<=10000を満たす整数nをキーボードから入力すると'(_n),
        '2以上n以下の素数とその個数を表示する'(_n).

'2<=n<=10000を満たす整数nをキーボードから入力すると'(_n) :-
        整数を得る('2<=n<=10000を満たす整数n',(_n >= 2,_n =< 10000),_n),!.

'2以上n以下の素数とその個数を表示する。ただし最後の行に素数の個数のみを表示しその他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない。'(_n) :-
        '2以上n以下の素数とその個数'(_2以上n以下の素数ならび,_個数),
        'その他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない'(_2以上n以下の素数ならび),
        最後の行に素数の個数のみを表示し(_個数).

'2以上n以下の素数とその個数'(_2以上n以下の素数ならび,_個数) :-
        findall(N,between(2,_n,N),L),
        エラトステネスの篩(L,_2以上n以下の素数ならび),
        length(_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).

'その他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない'(L) :-
        最後の一行を除いて(L),!.
'その他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない'([_1,_2,_3,_4,_5,_6,_7,_8,_9,_10|R]) :-
        atomic_list_concat([_1,_2,_3,_4,_5,_6,_7,_8,_9,_10],',',_10個の素数),
        writef('%t\n',[_10個の素数文字列]).
        'その他の各行には最後の一行を除いてちょうど10個の素数を表示しなければならない'(R).

最後の一行を除いて([]) :- !.
最後の一行を除いて(L) :-
        length(L,_要素数),
        _要素数 =< 10,
        atomic_list_concat(L,',',_10個以下の素数文字列),
        writef('%t\n',[_10個以下の素数文字列]),!.

最後の行に素数の個数のみを表示し(_個数) :-
        writef('%t\n',[_個数]).