大数阶乘
题目:求阶乘
要求:求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
}