1~20の最小公倍数を求めているだけ
プログラム:
% problem 5
solve:-
calc_lcm_all([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],Lcm),
write(Lcm).
% すべての数字の最小公倍数を取得
calc_lcm_all([],1):-!.
calc_lcm_all([First|Rest],Lcm):-
calc_lcm_all(Rest,LcmRest),
lcm(First,LcmRest,Lcm).
% 最小公倍数
lcm(N, M, Lcm) :-
Gcd is gcd(N , M),
Lcm is (N * M) // Gcd, !.
実行結果:
[2] 9 ?- time(solve).
***********************(解答伏せます)**********************
% 79 inferences, 0.000 CPU in 0.000 seconds (?% CPU, Infinite Lips)
true.