RosettaCodeData/Task/Partition-function-P/Maple/partition-function-p.maple

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