Partition function P: Difference between revisions

PicoLisp version
(PicoLisp version)
Line 1,044:
</lang>
 
=={{header|Picolisp}}==
Based on the Erlang implementation.
<lang Picolisp>
(de gpentagonals (Max)
(make
(let (N 0 M 1)
(loop
(inc 'N (if (=0 (& M 1)) (>> 1 M) M))
(T (> N Max))
(link N)
(inc 'M)))))
 
(de p (N)
(cache '(NIL) N
(if (=0 N)
1
(let (Sum 0 Sgn 0)
(for G (gpentagonals N)
((if (< Sgn 2) 'inc 'dec) 'Sum (p (- N G)))
(setq Sgn (& 3 (inc Sgn))))
Sum))))
</lang>
{{Out}}
<pre>
: (bench (p 6666))
0.959 sec
-> 193655306161707661080005073394486091998480950338405932486880600467114423441282418165863
</pre>
=={{header|Prolog}}==
<lang prolog>
357

edits