【发布时间】:2013-10-17 10:58:14
【问题描述】:
X 和 Y 是大于 100 位的整数。找到整数P,它在[X, Y[ 范围内,并保证“最佳”素数分解(即具有最多唯一素数因子的分解)。
我所做的只是检查素数并分解范围内的每个数字并找到符合规则的数字。有没有其他方法可以做到这一点?
编辑:
在上面的示例中,123456 被分解为2^6 * 3^1 * 643^1,即2 * 2 * 2 * 2 * 2 * 2 * 3 * 643,但只有 3 个唯一因子。
虽然答案 123690 被分解为 6 个独特的因素2^1 * 3^1 * 5^1 * 7^1 * 19^1 * 31^1。
【问题讨论】:
-
在网上搜索“c++ big number library”,因为那里有很多。
-
X 和 Y 大于 100 位的目的可能是禁止您计算每个可能数字的分解。恕我直言,这里有趣的是找到一种不需要这种计算的算法。
-
我开始写答案,但找不到精确的算法。我的想法是反过来。类似尝试
P = 2*2*2*....*2。如果它在 X 和 Y 之间,你就赢了。否则,试试P = 2*2*2*.... *3等。递归地尝试所有可能的乘法与尽可能小的数字。 -
这个问题似乎是题外话,因为它是关于数论的。
-
这个问题似乎是题外话,因为它是关于数论,而不是编程。
标签: c++ c primes largenumber decomposition