このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 130代目 #236 # [1] 授業単元: プログラミング # [2] 問題文(含コード&リンク): # 任意の数xの例で説明すると(x-1)!+1 がもしxで割り切れるならばxは素数であると # 言え、割り切れないならばxは、素数ではないと言える。 # このような素数を判別することができる定理をウィルソンの定理と呼ぶ。 # # 入力した値の階乗を求めるプログラム(4桁まで対応)を改良して、ウィルソン # の定理による素数判定を実装せよ。 # http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9928.txt # # 素数ならば素数です。素数でないならば素数ではありません。と表示しなさい。 :- dynamic(階乗保存計算/2). ウィルソンの定理による素数判定(X,素数です) :- X > 0, Y is X - 1, 階乗保存計算(Y,Z), 0 is (Z + 1) mod X,!. ウィルソンの定理による素数判定(X,素数ではありません) :- X > 0, Y is X - 1, 階乗保存計算(Y,Z), \+(0 is (Z + 1) mod X),!. 階乗保存計算(0,1) :- !. 階乗保存計算(1,1) :- !. 階乗保存計算(N,X) :- N2 is N - 1, 階乗保存計算(N2,Y), X is N * Y, asserta((階乗保存計算(N,X) :- !)).