Не смог точно определиться, в этот ли раздел стоит помещать тему или в математический. Так что извиняюсь, если что, перенесите.
Сразу скажу, что речь не пойдёт о создании нового алгоритма возведения в степень, а хочется просто научится вычислять функцию

- минимальное количество умножений, достаточное для возведения числа в a-тую степень.
Есть, конечно, всем известный алгоритм бинарного возведения, и он асимптотически оптимален, кажеться. Но для числа 27, к примеру, он даёт 7 умножений при любой реализации. А если представить

как

, то можно управиться за 6 умножений. Точно так же для

можно возводить бинарным алгоритмом за 11 умножений. А можно представить как

, после чего в пятую степень возводить бинарным алгоритмом. Получится 9 действий.
Кажеться, что вычисление

для данного

- очень трудоёмкая задача, вряд ли полиномиальная. Но если рассмотреть, например, задачу нахождения всех

для целых

? Как использовать предыдущие вычисления чтобы найти действительно минимальное количество перемножений?
Это что-то вроде задачи перебора разбиений, но намного сложнее, потом что пусть, делая последнее перемножение, мы получаем

. Тогда

. Но мы можем получить и меньше

перемножений, оставив последний шаг тем же, то есть получая сначала

и

. Ведь по ходу вычисления

мы можем получить какие-то промежуточные степени, которые потом можно использовать для вычисления

, избавившись от каких-то перемножений.
То есть просто перебрать пары

для

не получится, нужно анализировать, какие степени вычисляются по ходу вычисления

и

, смотреть, как можно провязать вычисление двух степеней... Это уже сумасшедшее время.
Что касается математики, то максимум, что мне удалось вывести на коленке за один вечер - это

, самое элементарное. Дальше пока ничего.
Решил написать в раздел олимпиадного программирования, потому что интересует именно алгоритм. Повторюсь, не какой-то супермощный алгоритм возведения в степень (бинарного вполне хватает асимптотически

), а алгоритм точного вычисления

.
Ну, и ещё я как ни увижу сложное задачу, думаю, не NP-ли она и не имеет ли связи со знаменитыми кликами, булевыми функциями и прочими...
-- 06.03.2015, 15:50 --Что касается математики, то максимум, что мне удалось вывести на коленке за один вечер - это

, самое элементарное. Дальше пока ничего.
Пока не нашёл примера, где лучшим результатом была бы другая схема, то есть где последним перемножением было бы

, но при вычислении

использовалась вычисленная при определнии

степень

, но такая, чтобы

не делил ни

ни

.