P.S. Начал с формирования полного списка чтобы не запутаться.
One-liner no-brainer на pari/gp, печатает все разбиения всех чисел от
до
:
Код:
n=5;for(i=1,n,print(partitions(i)))
немного красивее:
Код:
all_part=List();n=5;for(i=1,n,v=partitions(i);for(j=1,#v,listput(all_part,Vec(v[j]))));
listsort(all_part);for(i=1,#all_part,print(all_part[i]))
Даёт все разбиения всех чисел от 1 до 5 на слагаемые в виде массивов слагаемых, в каком-то (странном) порядке.
Код:
[1]
[2]
[3]
[4]
[5]
[1, 1]
[1, 2]
[1, 3]
[1, 4]
[2, 2]
[2, 3]
[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 2, 2]
[1, 1, 1, 1]
[1, 1, 1, 2]
[1, 1, 1, 1, 1]
Он-лайн интерпретатор pari/gp (вставить команду, нажать "Evaluate with PARI")
https://pari.math.u-bordeaux.fr/gp.html