Если вы посмотрите на раздел «Формулы функций разбиения» на странице Partiton (теория чисел) в Википедии, вы увидите, что не существует простого способанайдите номер раздела.
Вместо этого, вероятно, лучше всего сделать ставку:
sum(1 for _ in P(6))
или, что несколько проще, но слишком много памяти для больших чисел
len(list(P(6)))
с использованием существующегоfunction.
Также обратите внимание, что если вы хотите сохранить значения, возвращаемые P
, вы должны быть yield
ing p[:]
, а не p
- вы хотите сделать копию, а невыводить один и тот же список (который вы меняете) снова и снова.Вы можете понять, почему, если вы делаете list(P(6))
- он возвращает список того же самого пустого списка, повторяемого снова и снова .
Для получения дополнительной информации о разбиении см. Разделение с помощьюPython .