https://en.wikipedia.org/wiki/Partition_%28number_theory%29#Restricted_partitionsから、整数 p(n) の分割数は
Python では次のように記述できます。
def partitions(n, I=1):
yield(n,)
for i in range(I, n//2 + 1):
for p in partitions(n-i, i):
yield (i,) + p
私の質問は次のとおりです。これを変更して、個別の部分を含むパーティションの数であるq(n)を返すにはどうすればよいですか?
すなわち;
p(3)=2
、
3=2+1
3=1+1+1
(1,1,1)
区別されないためです。
しかし、異なる要素q(3)=1
のみが含まれているため
です。3=2+1
の生成関数はq(n)
、
n から無限大までの積を返す Python の良い積関数が見つかりません。