このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #907 # [2] 問題文(含コード&リンク): ある整数を入力し,それより小さい素数をすべて表示するプログラムを作成しなさい. 'ある整数を入力し,それより小さい素数をすべて表示する' :- 'ある整数を入力し,'(_整数), それより小さい素数をすべて表示する(_整数). 'ある整数を入力し,'(_整数) :- 行入力(_行), 整数検査(_行,_整数). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数). それより小さい素数をすべて表示する(_整数) :- それより小さい素数をすべて(_整数,_それより小さい素数ならび), 表示する(_それより小さい素数ならび). それより小さい素数をすべて(_整数,_それより小さい素数ならび) :- succ(_整数より1少ない整数,_整数), エラトステネスの篩を使って素数ならびを得る(_整数より1少ない整数,_それより小さい素数ならび). エラトステネスの篩を使って素数ならびを得る(_整数より1少ない整数,_それより小さい素数ならび) :- 素数候補のならびを作る(_整数より1少ない整数,_素数候補ならび), エラトステネスの篩(_素数候補ならび,_素数ならび). 素数候補のならびを作る(_整数より1少ない整数,_素数候補ならび) :- findall(_n,( between(2,_整数より1少ない整数,_n)),_素数候補ならび). エラトステネスの篩(_素数候補ならび,_素数ならび) :- 'エラトステネスの篩では常にならびの先頭要素は素数であることが確定して、 その確定した素数で候補ならびを篩に掛ける。 ここで得られた新しい候補ならびに対してエラトステネスの篩を適用する'(_素数候補ならび,_素数ならび). 'エラトステネスの篩では常にならびの先頭要素は素数であることが確定して、 その確定した素数で候補ならびを篩に掛ける。 ここで得られた新しい候補ならびに対してエラトステネスの篩を適用する'([],[]). 'エラトステネスの篩では常にならびの先頭要素は素数であることが確定して、 その確定した素数で候補ならびを篩に掛ける。 ここで得られた新しい候補ならびに対してエラトステネスの篩を適用する'([_確定した素数|_残り素数候補ならび],[_確定した素数|R2]) :- 篩に掛ける(_確定した素数,_残り素数候補ならび,_篩を掛けられた素数候補ならび), エラトステネスの篩(_篩を掛けられた素数候補ならび,R2). 篩に掛ける(_素数,_残り素数候補ならび,_篩を掛けられた素数候補ならび) :- findall(_素数候補,( 素数で割りきれるものを篩に掛ける(_素数,_残り素数候補ならび,_素数候補)),_篩を掛けられた素数候補ならび). 素数で割りきれるものを篩に掛ける(_素数,_残り素数候補ならび,_素数候補) :- member(_素数候補,_残り素数候補ならび), \+(0 is _素数候補 mod _素数). 表示する(_それより小さい素数ならび) :- atomic_list_concat(_それより小さい素数ならび,'\n',_それより小さい素数表示文字列), writef('%w\n',[_それより小さい素数表示文字列]).