3

我正在尝试找到一种在 java中计算N^N的有效方法。由于大 N 的结果会非常大,我使用 BigInteger 作为我的结果数据类型,N 是整数。如果 N 变大说N=10000000那么计算结果需要更多时间。有没有什么有效的方法可以在一秒钟内计算出来。

4

1 回答 1

8

N ln(N)在您的程序中处理数字的日志,即。随着N增长,N ln(N)相对于的大小N^N越来越快地缩小。

您实现这一点的方式取决于您需要做什么。如果你不需要你N^N的程序,那么忘记它并在程序输出后在纸上做。当您处理这么大的数字时,它的日志/数量级/它的位数(所有这些都是同义词)是最重要的信息。如果您的程序输出x,您会报告答案是 around e^x,这就是您所能说的。

如果你确实需要N^N在你的程序中,那么你仍然应该计算x = ln(N^N) = N ln(N). 但是接下来你将不得不想出一些创造性的方法来x实现你的程序可以实际使用的某个值。

于 2013-05-14T20:29:49.473 回答