16 lines
551 B
Prolog
16 lines
551 B
Prolog
/* SWI-Prolog 8.3.21 */
|
|
/* Author: Jan Burse */
|
|
:- table p/2.
|
|
p(0, 1) :- !.
|
|
p(N, X) :-
|
|
aggregate_all(sum(Z), (between(1,inf,K), M is K*(3*K-1)//2,
|
|
(M>N, !, fail; L is N-M, p(L,Y), Z is (-1)^K*Y)), A),
|
|
aggregate_all(sum(Z), (between(1,inf,K), M is K*(3*K+1)//2,
|
|
(M>N, !, fail; L is N-M, p(L,Y), Z is (-1)^K*Y)), B),
|
|
X is -A-B.
|
|
|
|
?- time(p(6666,X)).
|
|
% 13,962,294 inferences, 2.610 CPU in 2.743 seconds (95% CPU, 5350059 Lips)
|
|
X = 1936553061617076610800050733944860919984809503384
|
|
05932486880600467114423441282418165863.
|