Java 如何找到';n';提高功率';n';在爪哇
我试图找到一种在java中计算N^N的有效方法。由于对于大N,结果将非常大,因此我使用biginger作为结果数据类型,N是整数。如果N变大,例如N=10000000,则计算结果需要更多时间。有没有什么有效的方法可以在一秒钟内计算出来。处理程序中的数字日志,即Java 如何找到';n';提高功率';n';在爪哇,java,Java,我试图找到一种在java中计算N^N的有效方法。由于对于大N,结果将非常大,因此我使用biginger作为结果数据类型,N是整数。如果N变大,例如N=10000000,则计算结果需要更多时间。有没有什么有效的方法可以在一秒钟内计算出来。处理程序中的数字日志,即N ln(N)。随着N的增长,N ln(N)相对于N^N的大小收缩得越来越快 实现这一点的方式取决于您需要做什么。如果你不需要你的N^N在程序中,那么就忘了它,一旦程序输出,就在纸上完成它。当你处理这么大的数字时,它的对数/数量级/位数(所
N ln(N)
。随着N
的增长,N ln(N)
相对于N^N
的大小收缩得越来越快
实现这一点的方式取决于您需要做什么。如果你不需要你的N^N
在程序中,那么就忘了它,一旦程序输出,就在纸上完成它。当你处理这么大的数字时,它的对数/数量级/位数(所有这些都是同义词)是最基本的信息。如果您的程序输出了x
,您将报告答案大约是e^x
,这将是您所能说的全部内容
如果在程序中确实需要
N^N
,那么仍然应该计算x=ln(N^N)=N ln(N)
。但是你必须想出一些创造性的方法,从x
转换成你的程序可以实际使用的值。我对此表示怀疑。这是一个相当大的数字。你真的需要这个数字吗?整数?因为每秒不太可能需要7000万位数字(十进制)。如果你只需要它的一部分,比如前几个数字,有很多方法可以帮助你。去买一台超级计算机吧@zch肯定这是可能的,而且不太难,但在不到一秒钟的时间里做起来也不是小事。我仍然在“这不是OP真正需要的”,这似乎需要一个更长的讨论。我们可以吗?答案很可靠。只带走你所关心的,把剩下的抛在脑后。