Algorithm 将一个数分解为m个因子,使其中最大的因子最小化

Algorithm 将一个数分解为m个因子,使其中最大的因子最小化,algorithm,factors,Algorithm,Factors,假设你有一个数字n。 我想把它分解为m个因子的乘积 我在想一个算法来实现这一点。 首先,我在其m th根下找到n的最大因子(f1)。 然后,将n替换为n/f1。 现在在其(m-1)th根下找到n的最大因子 重复这个过程,我得到一系列因素 你认为这个算法正确吗?还是有什么地方失败了?在这种情况下,您的算法会失败:n=2^3*3^2*5=360和m=3。您的算法执行以下步骤: 计算360^(1/3)=7.114…并选择小于此值的360的最大因子。因此,选择系数6 将360替换为60。60的最大因子,

假设你有一个数字n。 我想把它分解为m个因子的乘积

我在想一个算法来实现这一点。 首先,我在其
m th
根下找到n的最大因子(
f1
)。 然后,将n替换为
n/f1
。 现在在其
(m-1)th
根下找到n的最大因子

重复这个过程,我得到一系列因素


你认为这个算法正确吗?还是有什么地方失败了?

在这种情况下,您的算法会失败:
n=2^3*3^2*5=360
m=3
。您的算法执行以下步骤:

  • 计算
    360^(1/3)=7.114…
    并选择小于此值的
    360
    的最大因子。因此,选择系数
    6
  • 360
    替换为
    60
    60
    的最大因子,即最大
    sqrt(60)=7.746…
    6
  • 最后,您的算法选择最后一个剩余因子,
    10
  • 因此,您的算法会生成因式分解
    n=6*6*10
    。但是,这不是最佳的,因为
    n=5*8*9


    一般来说,贪婪算法可能会在以后做出使问题恶化的选择。这就是本例中发生的情况:第一个因素选择得不好,因此后面的选择只能给出次优的解决方案。

    这怎么算失败?在问题标题中,OP要求最小化所选因素中的最大因素,但您提供的两种可能性具有相同的最大因素。我误解了什么吗?@对不起,我把它理解为最大化最小因子。我将很快构建一个正确的示例