このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/226
#  [1]C言語 繰り返し文 
#  [2]問題 長いのでリンクでお願いします。 
#  http://ime.nu/codepad.org/iaWNbokN 
#  [3]Linux ubuntu  gcc  C言語 
#  [4]今週日曜日迄 
#  [5]配列 ポインタなどは習ってないですよろしくお願いします。 
# 
#  課題1.
#  キーボードから2 以上の整数を1 つ入力し,その数が素数(1 とその数以外で割り切れない数) のときだけ,
#  その数を表示するプログラムを作成せよ.ただし,以下の条件を満たすこと.
#  プログラム中で,ループ回数をカウントし,入力値が素数のときにループ回数も
#  表示する
#   次ページに記載されているサンプルプログラムよりもループ回数が少なくなるようにする
#  1)サンプルプログラムでは,入力値(n) が素数の場合のループ回数は,n - 2 回になる
#  2)入力値が小さい場合(n = 2, 3 など) は,ループ回数が少なくなっていなくてもよい#  
#  #include <stdio.h> 
#  int main(void) 
#  { 
#  int n, i, count = 0; 
#  printf("n: "); 
#  scanf("%d", &n); 
#  for (i = 2; i * i <= n; i++) { 
#  count++; 
#  if (n % i == 0) { 
#  break; 
#  } 
#  } 
#  if (i * i > n) { 
#  printf("%d: %d\n", n, count); 
#  } 
#  return 0; 
#  } 
#  #  

'キーボードから2 以上の整数を1つ入力し,その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する.ただし,以下の条件を満たすこと.プログラム中で,ループ回数をカウントし,入力値が素数のときにループ回数も表示する' :-
        'キーボードから2 以上の整数を1つ入力し'(_2以上の整数),
        'その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する'(_2以上の整数).
'キーボードから2 以上の整数を1 つ入力し,その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する.ただし,以下の条件を満たすこと.プログラム中で,ループ回数をカウントし,入力値が素数のときにループ回数も表示する' :-
        'キーボードから2 以上の整数を1つ入力し,その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する.ただし,以下の条件を満たすこと.プログラム中で,ループ回数をカウントし,入力値が素数のときにループ回数も表示する'.

'キーボードから2 以上の整数を1つ入力し'(_2以上の整数) :-
        整数を得る('2以上の整数を1つ',_2以上の整数 >= 2,_2以上の整数),!.

'その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する'(0) :- !.
'その数が素数(1 とその数以外で割り切れない数) のときだけ,その数を表示する'(_2以上の整数) :-
        'Nは素数か'(_2以上の整数),
        writef('%tは素数です\n',[_2以上の整数]),
        fail.

'Nは素数か'(N) :-
        findall(M,between(2,N,M),L),
        'エラトステネスの篩'(L,L2),
        last(L2,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).