我们假设我们有一些除数N.我想找到一个有{n}除数的minimum number
。
我的算法
pm[i]^(rp[i]-1)
,i = 1 ...素数因子的长度对于N = 12,答案为60 = 2^(3-1) * 3^(2-1) * 5^(2-1)
但是对于数字243我的算法给出了错误的答案(5336100 - 但它不是具有243个除数的最小数)。预期的数字是2822400
。
我的错在哪里?有文献吗?
答案 0 :(得分:6)
让我们从OEIS sequence开始。现在任何数字都可以表示为主要权力的产物。
它会有{p> How many divisors吗?你可以使用它将具有的组合来证明:所以你必须解决上面的表达式等于你所拥有的分割数的等式。我不会在这里编写代码,但请注意,因为您正在寻找整数解,所以您可以计算出除数的数量。
当您找到m_i
后,您可以通过排序m_i
并将最大m_i
分配给最小素数来获得最小数字。因此,如果您的m1 = 2
,m2 = 5
,m3 = 2
,该号码将为2^5 * 3^2 * 5^2
。
答案 1 :(得分:4)
以SalvadorDali的回答为基础:
假设N是(m i + 1)的乘积,你试图通过计算N的素因子分解来找到m i ,然后减去1从每个因素。
这并不一定能给出最小答案,如你的例子所示,N = 243。 243的主要因子分解是
243 = 3*3*3*3*3
所以你的方法建议最小值应该是
2^2 * 3^2 * 5^2 * 7^2 * 11^2 = 5336100
然而,243的替代复合因子分解是
243 = 9*3*3*3
表明最低要求
2^8 * 3^2 * 5^2 * 7^2 = 2822400
复合因子分解效果更好,因为2 ^ 6小于11 ^ 2。所以一般来说,你的方法只是一个起点。计算完答案后,您需要将最大的素数折叠成最小的素数以改善答案。