大数阶乘
type
status
date
slug
summary
tags
category
icon
password
由于溢出,使用原始
int
数据类型无法找到大于或等于13的数字的阶乘太大而int
变量无法容纳,其最大值仅为2147483647(2 ^ 31 -1)
。即使我们使用long
数据类型,大于或等于21
的阶乘也会产生溢出。要计算大于21
的阶乘,需要使用java.math
包中的BigInteger
类。顾名思义,BigInteger
类旨在容纳非常大的整数值,该值甚至大于长整型数的最大值,例如2 ^ 63 -1
或9223372036854775807L
。但不能使用递归来计算较大数量的阶乘,而是需要为此使用for
循环。还值得注意的是,类似于
java.lang.String
和其他包装器类, BigInteger
在Java中也是不可变的,这意味着将结果存储回相同的变量很重要,否则,计算结果将会丢失。BigInteger
将数字存储为2的补数。此外,它还支持模块化算术,位操作,素数测试,素数生成,GCD计算和其他其他操作。实现
Loading...