Как найти мультипликативные разделы любого целого числа?

Я ищу эффективный алгоритм для вычисления мультипликативных разделов для любого заданного целого числа. Например, число таких разбиений для 12 равно 4, то есть

12 = 12 x 1 = 4 x 3 = 2 x 2 x 3 = 2 x 6

Я прочитал статью в википедии по этому поводу, но она не дает мне алгоритма генерации разбиений (там говорится только о числе таких разбиений, и, честно говоря, даже это мне не очень понятно!).

Проблема, которую я рассматриваю, требует вычисления мультипликативных разделов для очень больших чисел (> 1 миллиарда), поэтому я пытался придумать для этого подход динамического программирования (чтобы поиск всех возможных разделов для меньшего числа можно было повторно использовать, когда это меньшее число само является множителем большего числа), но пока я не знаю, с чего начать!

Любые идеи/подсказки будут оценены по достоинству - это не домашняя задача, а просто то, что я пытаюсь решить, потому что это кажется таким интересным!

13
задан TCSGrad 19 December 2011 в 07:27
поделиться