このディレクトリの索引

'与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる データが標準入力で与えられた際、結果を標準出力に出力する' :- 'データが標準入力で与えられた際、与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる'(_与えられた数字,_いくつ), 結果を標準出力に出力する(_いくつ). 'データが標準入力で与えられた際、与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる'(_与えられた数字,_いくつ) :- 'データが標準入力で与えられた際、'(_与えられた数字), '与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる'(_与えられた数字,_いくつ). 'データが標準入力で与えられた際、'(_与えられた数字) :- write('数字を入力してください : '), read_line_to_codes(current_input,Codes), number_codes(_与えられた数字,Codes). '与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる'(_与えられた数字,_いくつ) :- '与えられた数字よりも小さい数字の中で'(_与えられた数字,_与えられた数字よりも小さい数字のならび), 素数がいくつあるか調べる(_与えられた数字よりも小さい数字のならび,_いくつ). '与えられた数字よりも小さい数字の中で'(_与えられた数字,_与えられた数字よりも小さい数字のならび) :- succ(_与えられた数字_1,_与えられた数字), findall(N,between(2,_与えられた数字_1,N),_与えられた数字よりも小さい数字のならび). 素数がいくつあるか調べる(_与えられた数字よりも小さい数字のならび,_いくつ) :- 度数(非決定性のエラトステネスの篩(_与えられた数字よりも小さい数字のならび,_素数),_いくつ). 非決定性のエラトステネスの篩([_素数|_],_素数). 非決定性のエラトステネスの篩([N|L1],_素数) :- 先頭の素数を網として篩に掛けて行く(N,L1,_素数). 先頭の素数を網として篩に掛けて行く(N,L1,_素数) :- 'L1の要素でNで割り切れないものを篩に掛ける'(N,L1,L2), 非決定性のエラトステネスの篩(L2,_素数). 'L1の要素でNで割り切れないものを篩に掛ける'(N,L1,L2) :- findall(_要素,( 'L1の要素でNで割り切れないものを'(N,L1,_要素)),L2). 'L1の要素でNで割り切れないものを'(N,L1,_要素) :- 'L1の要素で'(L1,_要素), 'Nで割り切れないものを篩に掛ける'(_要素,N). 'L1の要素で'(L1,_要素) :- member(_要素,L1). 'Nで割り切れないものを篩に掛ける'(_要素,N) :- \+(0 is _要素 mod N). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). 結果を標準出力に出力する(_いくつ) :- writef('結果は %w\n',[_いくつ]). :- '与えられた数字よりも小さい数字の中で、素数がいくつあるか調べる データが標準入力で与えられた際、結果を標準出力に出力する',halt.