Некоторые методы разбиения числа на сумму слагаемых:
- Алгоритм Гинденбурга. 1 Порождает разбиения любых натуральных чисел в порядке увеличения количества слагаемых, а разбиения равной длины перечисляются в лексиграфическом порядке. 1 Шаги алгоритма начинаются с разбиения, которое состоит только из одного слагаемого, равного n. 1 У последующих разбиений число слагаемых не убывает, а сами слагаемые записываются в неубывающем порядке своих величин. 1
- Итеративный алгоритм. 2 Используется в онлайн-калькуляторе разложения числа на слагаемые на сайте planetcalc.ru. 2 Логика алгоритма:
- Дать исходный массив в виде единиц — А (1,1,1,1,1). 2 Размерность массива соответствует числу n, все разложения которого ищутся. 2
- Двигаясь по массиву слева направо, искать в нём первый минимальный элемент — x, последний элемент не учитывается. 2 Нужно как значение элемента, так и его позиция в массиве. 2
- Перенести единицу из конца (последнего элемента) в найденный минимальный элемент x (равносильно увеличению x на единицу и уменьшению на единицу последнего элемента). 2
- Разложить сумму всех элементов после изменённого элемента — x — на единицы. 2 Здесь добавляют единицы, используя ранее подсчитанную частичную сумму. 2
Также для разложения числа на слагаемые можно использовать рекурсивный алгоритм. 3 Для поиска первого слагаемого в разложении проверяют все числа, начиная с 1 до N/2. 3 После выбора первого слагаемого решают задачу разложения на слагаемые числа, равного N=N-n1. 3