【发布时间】:2020-03-11 21:59:35
【问题描述】:
我正在尝试解决以下问题https://open.kattis.com/problems/listgame2 并且我能够成功地生成给定数字的所有质因数,但问题要求我只需要获取唯一数字的列表。
例如 - 1099511627776 = 2^40 但由于数字 2 重复了 40 次,因此问题是将 2^40 简化为 2*4*8* .... == 1099511627776 而不重复任何整数来得到乘积。
我在 Stackoverflow 上发现了一个类似的问题 Algorithm: Factorize a integer X to get as many distinct positive integers(Y1...Yk) as possible so that (Y1+1)(Y2+1)...(Yk+1) = X 但没有提供逻辑
上面链接中的一个反例是数字 10307264 = 2^6 * 11^5 这应该可能减少到 2 * 4 * 11* 22 * 44 * 121 == 10307264
我不寻求解决方案,而是针对具体逻辑进行讨论以找到最佳解决方案。 提前致谢!
【问题讨论】:
-
似乎它可能是dynamic programming 解决方案的候选者。
-
@johnColeman 感谢您引导我访问该链接。通过 Prune 的解释和这个 wiki,我对如何解决这个问题有了一个很好的了解
标签: python algorithm primes number-theory kattis