美文网首页
大数阶乘

大数阶乘

作者: 瑾墨QAQ | 来源:发表于2019-01-26 23:55 被阅读0次

大数阶乘

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

相关文章

  • 大数阶乘

    大数阶乘 题目:求阶乘要求:求200以上的数的阶乘。即普通的数据类型是不可能表达出所求的数据。 解题: 方法一:B...

  • Java大数阶乘

    阶乘定义:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘...

  • Java大数阶乘

    Java大数阶乘 描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?输入输入...

  • 机试常用算法和题型-大数专题

    大数专题 字符加减关系,实现任意长度整数相加 大数加法,进阶转换版 大数浮点数加法 大数运算之阶乘

  • 大数阶乘--10000的阶乘实现

    普通的阶乘算法: 在数字比较小的时候,以上阶乘算法还能勉强应对,但当数字大于50时,阶乘结果就达到了65位数之多,...

  • 斯特林公式(对数的简便求法)1018

    求一个大数的阶乘位数,直接求阶乘直接超出,故需要用公式: 直接求阶乘,该数不用保存,直接取对数加一便可。 log1...

  • HDU1066

    一个超时的写法:c++大数阶乘+字符处理(逆序)

  • 大数阶乘java实现

    节点类 public class Node {Node pre;Node next;int data; } 双向链...

  • 求解大数阶乘 【C语言】

    题目 编写一个算法,计算 的阶乘 代码

  • 大数阶乘(N! Plus)问题

    1.解题思路 将正整数N从1到N逐位相乘,即1 * 2 * 3...... * (N-1) * N。每次相乘后的值...

网友评论

      本文标题:大数阶乘

      本文链接:https://www.haomeiwen.com/subject/ovbwjqtx.html