31 lines
612 B
Plaintext
31 lines
612 B
Plaintext
p:=proc(n)
|
|
option remember;
|
|
local k,s:=0,m;
|
|
for k from 1 while (m:=iquo(k*(3*k-1),2))<=n do
|
|
s-=(-1)^k*p(n-m);
|
|
od;
|
|
for k from 1 while (m:=iquo(k*(3*k+1),2))<=n do
|
|
s-=(-1)^k*p(n-m);
|
|
od;
|
|
s
|
|
end:
|
|
p(0):=1:
|
|
|
|
time(p(6666));
|
|
# 0.796
|
|
|
|
time(combinat[numbpart](6666));
|
|
# 0.406
|
|
|
|
p~([$1..20]);
|
|
# [1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 56, 77, 101, 135, 176, 231, 297, 385, 490, 627]
|
|
|
|
combinat[numbpart]~([$1..20]);
|
|
# [1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 56, 77, 101, 135, 176, 231, 297, 385, 490, 627]
|
|
|
|
p(1000)
|
|
# 24061467864032622473692149727991
|
|
|
|
combinat[numbpart](1000);
|
|
# 24061467864032622473692149727991
|