gpt4 book ai didi

java - 将 BigIntegers 打印到文本文件

转载 作者:行者123 更新时间:2023-11-29 05:20:28 25 4
gpt4 key购买 nike

我正在用 Java 计算非常大的阶乘。但是,当我尝试将它们写入文本文件时,它会花费太多时间。我正在使用这种方法来打印数字。

PrintWriter writer = new PrintWriter(index + "!.txt", "UTF-8");
writer.println(number);
writer.close();

打印 10,000 个!到一个文本文件需要 194 毫秒。文件大小为 35.7 kB。

打印 100,000 个!到一个文本文件需要 24,314 毫秒。文件大小为 456.6 kB。

我认为这个文件大小的速度太慢了。如何在几秒钟内打印出包含数百万位数字的 BigIntegers?有没有更快的方法或任何可以优化它的方法?

最佳答案

您观察到的时间是由于 BigInteger.toString() 而不是写入文件。

将 looong BigInteger 转换为十进制(或任何其他基数)数字序列是一个繁琐的过程,涉及将 looong int[] 除以基数并以相当间接的方式组成结果字符串,甚至使用 StringBuilder。 (刚刚查了一下:1.8使用了改进的算法,但是35k或者456k位数还有很长的路要走。)

我曾经遇到过这个问题并最终编写了我自己的 BigInteger,使用可以非常快速地转换为基数 10 的表示。

如果您选择另一个库,请确保它允许修改对象(而不是返回新对象)的操作。如果您希望频繁/长时间转换为十进制字符串,请尝试找到一个表示以 10 的整数次方为基数的数字。

关于java - 将 BigIntegers 打印到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24978180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com