美文网首页
Java大数阶乘

Java大数阶乘

作者: 眼若繁星丶 | 来源:发表于2020-11-04 20:21 被阅读0次

Java大数阶乘

描述

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

输入

输入一个整数m(0<m<=5000)

输出

输出m的阶乘,并在输出结束之后输入一个换行符

样例输入

50

样例输出

30414093201713378043612608166064768844377641568960512000000000000

模拟阶乘

public class Solution {
    public static void main(String[] args) {
        int[] res = new int[3000];  // 存储阶乘的最终结果
        res[0] = 1; // 0和1的阶乘为1

        Scanner sc = new Scanner(System.in);
        System.out.print("请输入 n! 的 n:");
        int n = sc.nextInt();  // 待求阶乘的数
        int top = 0, carry = 0; // 分别表示结果的最高位和进位

        for (int i = 2; i <= n; i++) {  // 一直乘到n,模拟阶乘过程
            for (int j = 0; j <= top; j++) {
                res[j] = res[j] * i + carry;
                carry = res[j] / 10;    // 计算进位
                if (j == top && carry >= 1) {   // 计算到最高位且发现最高位有进位
                    top++;  // 最高位加一
                }
                res[j] = res[j] % 10;   // 取余,把余数存到当前位置
            }
        }
        for (int i = top; i >= 0; i--) {
            System.out.print(res[i]);
        }
    }
}

BigInteger

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入 n! 的 n:");
        int n = sc.nextInt();
        BigInteger bi = new BigInteger("1");

        for (int i = 2; i <= n; i++) {
            bi = bi.multiply(new BigInteger(i + ""));
        }
        System.out.println(bi);
        sc.close();
    }
}

相关文章

  • Java大数阶乘

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

  • Java大数阶乘

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

  • 大数阶乘java实现

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

  • 大数阶乘

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

  • Java 实现阶乘算法

    Java 实现阶乘算法 阶乘算法如下: 以下列出 0 至 20 的阶乘: 0!=1,(0 的阶乘是存在的) 1!=...

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

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

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

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

  • L1-013. 计算阶乘和

    L1-013. 计算阶乘和 问题描述:L1-013. 计算阶乘和 java代码: 结果

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

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

  • HDU1066

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

网友评论

      本文标题:Java大数阶乘

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