小编典典

查找给定因子数量最小的算法

algorithm

在给定自然数 n的情况下 ,有谁能想到的最有效的算法是什么,它返回具有 n个 正数除数(包括1和 x )的最小自然数 x
?例如,给定4,该算法应得出6(除数:1、2、3、6);即6是具有4个不同因子的最小数字。同样,给定6,该算法应得出12(除数:1、2、3、4、6、12);即12是具有6个不同因子的最小数字


就现实性能而言,我正在寻找一种可扩展的算法,该算法在一台每秒可进行10 7次计算的机器上,可以在2秒内给出10 20数量级的答案。


阅读 402

收藏
2020-07-28

共1个答案

小编典典

http://www.primepuzzles.net/problems/prob_019.htm

b)Jud McCranie,TWA Baumann和Enoch Haga发送了基本相同的过程来找到给定 d的 N(d)

  1. d 分解为其主要除数的乘积: d = p 1 a 1 * p 2 a 2 * p 3 a 3 * …
  2. 将这个因式分解为另一个算术等效因式分解,该因式分解由无幂单调递减且不一定是质数的素数组成。(uf!…) d = p 1 a 1 * p
    2 a 2 * p 3 a 3 *。 。= b 1 * b 2 * b 3 ......_这样 _b 1 ≥b 2 ≥b 3 …
    你必须意识到,对于每一个给定d,还有可以做一些算术等价的因式分解:举例:
    如果 d = 16 = 2 4_那么有5个等效的因式分解: _d = 2 * 2 * 2 * 2 = 4 * 2 * 2 = 4 * 4 = 8 * 2 = 16
  3. N 是对 d的 所有等效因式分解计算 2 b 1 -1 * 3 b 2 -1 * 5 b 3 -1 * …_所得的最小数目
    工作相同的例子:
    _N(16)=最小的这些{2 * 3 * 5 * 7,2 3 * 3 * 5,2 3 * 3 3 2 7 ×3,2 15 } = 2 3 * 3 * 5 = 120

更新: 数字在10 20附近,请注意同一页面上克里斯蒂安·鲍(Christian Bau)的注释。

2020-07-28