阶乘——理工科领域常用的一种数学符号。关于阶乘,一般定义为:一个正整数的阶乘是不大于这个数的所有正整数的乘积,并且0的阶乘为1。
阶乘的应用范围非常广,比如后面我们要讲到的排列组合、超越数E、梅森数和梅森素数、伪素数等等,因此在我们利用BigDecimal来处理。
代码:
/**
* 自然数的阶乘
*
* @param number
* @return
*/
private static BigDecimal factorial(BigDecimal number) {
// TODO Auto-generated method stub
BigDecimal multiply = BigDecimal.ONE;
if (number.equals(BigDecimal.ZERO))
multiply = BigDecimal.ONE;
else if (number.compareTo(BigDecimal.ZERO) > 0 && intNumber(number))
for (BigDecimal count = BigDecimal.ONE; count.compareTo(number) <= 0; count = count.add(BigDecimal.ONE))
multiply = multiply.multiply(count);
else
return null;
return multiply;
}
/**
* 输出阶乘
*
* @param number
*/
private static void fa