代码之家  ›  专栏  ›  技术社区  ›  Mostowski Collapse ninesided

计算9^(9^9)所有数字的最快方法?

  •  3
  • Mostowski Collapse ninesided  · 技术社区  · 6 年前

    有没有一种方法可以非常快地计算出9^(9^9)的所有大约3.7亿个十进制数字?我使用了一个开箱即用的bignumber算法库(*),耗时16分钟。

    (*)我使用JavaBigType的PUE()方法:

    ?- time((_ is 9^(9^9))).
    % Up 974,318 ms, GC 9,302 ms, Thread Cpu 962,688 ms (Current 06/01/18
    19:54:01)
    Yes
    
    ?- statistics.
    Max Memory           7,635,730,432 Bytes
    Used Memory           765,913,440 Bytes
    Free Memory          2,891,739,304 Bytes
    Uptime                 2,466,670 Millis
    GC Time                    9,315 Millis
    Thread Cpu Time          963,812 Millis
    Current Time          06/01/18 20:18:37 
    

    Java实现使用Karatsuba和Toom Cook:
    http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/math/BigInteger.java

    备注:要额外输出约3.7亿个十进制数字,如果每个数字使用1毫秒,则只需370000毫秒。这是我计算上述精确数字所需时间的三分之一,即974318毫秒,而不显示。

    1 回复  |  直到 6 年前
        1
  •  2
  •   btilly    6 年前

    尝试 https://raw.githubusercontent.com/tbuktu/bigint/master/src/main/java/java/math/BigInteger.java 对于一个改进的bigInteger Schoenhage-Strassen 一旦整数超过74000位。我的信封背面写着,当你达到数亿个数字后,应该会快一个数量级。