Algorithm 将一个数分解为m个因子,使其中最大的因子最小化
假设你有一个数字n。 我想把它分解为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的最大因子,
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要求最小化所选因素中的最大因素,但您提供的两种可能性具有相同的最大因素。我误解了什么吗?@对不起,我把它理解为最大化最小因子。我将很快构建一个正确的示例