我们如何求解具有 N 的方程!其中的常量,其中 N 的范围可以是 1<=N<=10^6 BigInteger 最多只能执行 128 位,对吗?
即使在两边都取对数,它留下的值也比 BigInteger 大。
我们如何求解具有 N 的方程!其中的常量,其中 N 的范围可以是 1<=N<=10^6 BigInteger 最多只能执行 128 位,对吗?
即使在两边都取对数,它留下的值也比 BigInteger 大。
不,BigInteger
可以处理任意大小的整数(受内存限制)。从文档中:
不可变的任意精度整数。
(强调我的。)
这并不是说这BigInteger
一定是满足您要求的正确答案,但在决定之前了解它的真正功能是值得的。
即使在两边都取对数,它留下的值也比 BigInteger 大。
让 N=10^6
log(N!) ~ NlogN - N [Stirling's approximation]
~ 13e6
这可以(很容易)适合 int
BigInteger 的实现被限制在大约 2 ^ 21 亿位或大约 256 MB。鉴于它用于int
位长度,这不太可能增加。