このディレクトリの索引
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.  
#  #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. キーボードから10 進整数を入力し,その数を2 進数に変換した値を表示するプログラムを作成
#  せよ.ただし,変換後の2 進数は正しい順序で表示すること(入力が10 ならば,1010 と表示).
#  
#  課題3.課題1,2 のプログラムを作成するにあたり,どのように考えてプログラムを実現したのかをレ
#  ポートにまとめよ(プログラムの説明ではなく,問題を解くための考え方を説明する).
#  ※プログラムが完成していなくても,自分の考えた解き方をレポートにまとめること
#  */
#  

'キーボードから10進整数を入力し,その数を2進数に変換した値を表示する' :-
        キーボードから10進整数を入力し(_10進整数),
        その数を2進数に変換した値を表示する(_10進整数).

キーボードから10進整数を入力し(_10進整数) :-
        整数を得る('10進整数',integer(_10進整数),_10進整数).

その数を2進数に変換した値を表示する(_10進整数) :-
        その数を2進数に変換した値を(_10進整数,[],_2進数に変換した値),
        表示する(_2進数に変換した値).

その数を2進数に変換した値を(_10進整数,_2進数に変換した値) :-
        _10進整数 >= 0,
        その数を2進数に変換した値を(_10進整数,[],L),
        atomic_list_concat(L,_2進数に変換した値),!.
その数を2進数に変換した値を(_10進整数,_2進数に変換した値) :-
        負数を2進数に変換(_10進整数,_2進数に変換した値).

その数を2進数に変換した値を(N,L1,[N|L1]) :-
        N < 2,!.
その数を2進数に変換した値を(_10進整数,L1,L) :-
        M_1 is _10進整数 // 2,
        M_2 is _10進整数 mod 2,
        その数を2進数に変換した値を(M_1,[M_2|L1],L).

負数を2進数に変換(_10進整数,_2進数に変換した値) :-
        _10進整数_2 is abs(_10進整数) + 1,
        その数を2進数に変換した値を(_10進整数_2,[],L_1),
        'Lを32要素に拡張して否定する'(L_1,L_2),
        atomic_list_concat(L_2,_2進数に変換した値).

'Lを32要素に拡張して否定する'(L_1,L_2) :-
        length(L,32),
        append(L_0,L_1,L),
        all(L_0,0),
        各要素を反転する(L,L_2),!.

各要素を反転する([],[]).
各要素を反転する([0|R1],[1|R2]) :-
        各要素を反転する(R1,R2).
各要素を反転する([1|R1],[0|R2]) :-
        各要素を反転する(R1,R2).

表示する(_2進数に変換した値) :-
        writef('%t\n',[_2進数に変換した値]).