大数阶乘

大数阶乘

题目:求阶乘
要求:求200以上的数的阶乘。即普通的数据类型是不可能表达出所求的数据。

解题:

方法一:
BigInteger类的使用:

BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。

基本数据类型的其中范围:
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

如果要计算更大的数字,使用Integer 数据类型就无法实现了,所以 Java 中提供了BigInteger 类来处理更大的数字。 BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。

代码如下:

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String args[]){
        Scanner cin = new Scanner(System.in);
        long num = cin.nextLong();
        BigInteger ans = new BigInteger("1");
        while(num > 0){
            ans = ans.multiply(BigInteger.valueOf(num));
            num -= 1;
        }
        System.out.println(ans);
        cin.close();
    }
}

分析:

当(输入的num>0){
结果=结果X(Biginteger(转换为num的long型))
num-1
}

你可能感兴趣的:(大数阶乘)