是否有一种方法/算法可以根据给定数的素数生成唯一整数?

问题描述 投票:0回答:2

我正在尝试解决以下问题https://open.kattis.com/problems/listgame2并且我能够成功生成给定数字的所有素数,但是问题要求我只需要获取唯一数字列表即可。

例如-1099511627776 = 2 ^ 40但是由于数字2重复了40次,所以问题在于将2 ^ 40简化为2 * 4 * 8 * .... == 1099511627776,而无需重复任何整数即可得出乘积。

我在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处发现了关于Stackoverflow的类似问题但没有提供逻辑]

来自上面链接的一个反例是数字10307264 = 2 ^ 6 * 11 ^ 5,它可能会减少为2 * 4 * 11 * 22 * 44 * 121 == 10307264

我不是寻求解决方案,而是讨论寻找最佳解决方案的具体逻辑。提前致谢!

python algorithm primes number-theory kattis
2个回答
0
投票

不要将它们视为唯一的整数;认为他们是权力元组。您的第一个示例是2 ^ 40;您必须将40划分为尽可能多的不同整数。对于这个简单的示例,贪婪的方法使其变得微不足道:先抓取1,再抓取2,...,直到剩下的数字足够大以至于无法分离而不会踩到先前的数字。这是三角数的简单应用:


-2
投票

有很多可能的方法,但是如何使用列表中的collections.Counter?由您决定如何处理计数> 1 ...

© www.soinside.com 2019 - 2024. All rights reserved.