このディレクトリの索引

# 出典 :: #443 # 【 課題 】(nの階乗 < 10000)が成り立つ最大の n を求める. # ループは while 文を利用すること. # n の階乗とは, n! := 1×2×3×…×n である.[ヒント]: 10000 を超えるまで # 順に階乗の n を増やし,階乗が 10000 を超えた時点で最後の n を乗算する前の # n を出力する.与えられた課題文をそのまま書きます '階乗の解が10000を越えた時点での最後のN'(N) :- '階乗の解が10000を越えた時点での最後のN'(1,1,N). '階乗の解が10000を越えた時点での最後のN'(N,X,X) :- '最後のNに1を加えた数の階乗が10000以上になったら停止する'(N,X),!. '階乗の解が10000を越えた時点での最後のN'(N,Y,X) :- 'Nに1を加えた数の階乗が10000を越えるまでNを増やして行く'(N,Y,X). '最後のNに1を加えた数の階乗が10000以上になったら停止する'(N,X) :- (N + 1) * X >= 10000. 'Nに1を加えた数の階乗が10000を越えるまでNを増やして行く'(N,Y,X) :- succ(N,N2), Z is Y * N, '階乗の解が10000を越えた時点での最後のN'(N2,Z,X).