给定数字X,计算该数字的主要因子乘积的最有效方法是什么?
没有实际的分解方法,有没有办法做到这一点?
注-需要素数乘积(所有与功率单位有关)。

最佳答案

该答案解决了您问题的后半部分-即是否可以在不考虑数量的情况下计算素因数的乘积。这个答案表明这是可行的,并且显示了一种比单纯的因式分解方法更有效的方法。但是,如评论中所述,此提议的方法仍然不如使用更高级的方法将数字分解为有效的方法。

令k为该数字的立方根。

检查所有大小为k或更小的素数的数字,然后除掉我们发现的所有素数。

现在我们知道,结果数是大于k的素数的乘积,因此它必须是1,单个素数或2的素数的乘积。 (它的质数不能超过2个,因为k是该数字的立方根。)

我们可以通过简单地测试数字是否是一个完美的平方来检测它是否是2个素数的乘积。

假设我们已经预先计算了素数列表,则此结果使我们能够以O(n ^(1/3)/log(n))计算结果。

例1

假设我们有9409。

立方根为21.1,因此我们首先通过21以下的质数检查可除性。

他们都找不到结果,因此我们计算sqrt并找到9409 == 97 ** 2。

这意味着答案是97。

实现例2

假设我们有数字9797。

立方根为21.4,因此我们用21以下的质数检查可除性。

他们都找不到结果,因此我们计算平方根,发现9797不是一个完美的正方形。

因此,我们得出的答案是9797。(请注意,我们尚未确定因子分解来得出此答案。实际上,因子分解为97 * 101。)

关于algorithm - 多个素数的乘积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30154095/

10-14 08:34