Problem 3 最大の素因数

プロジェクトオイラーをPrologで解く

問題


% problem 3

solve:-
write('600851475143 = '),
div_mod0(600851475143,2),
!.

div_mod0(1,_):-
!,
write('1').
div_mod0(BaseNum,DivNum):-
BaseNum mod DivNum =:= 0,
Divided is BaseNum / DivNum,
DivNum1 is 2,
write(DivNum),write(' * '),
div_mod0(Divided,DivNum1).

div_mod0(BaseNum,DivNum):-
DivNum1 is DivNum + 1,
div_mod0(BaseNum,DivNum1).

実行結果:
1 ?- time(solve).
600851475143 = 71 * 839 * 1471 * 6857 * 1
% 18,489 inferences, 0.016 CPU in 0.016 seconds (100% CPU, 1183296 Lips)
true.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>