`
ethen
  • 浏览: 122222 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

大数的阶乘

阅读更多

大数的阶乘,没想到啥好办法,姑且如此吧。

import java.math.BigInteger;

public class Factorials {
	static int index = 1;

	public static void main(String args[]) {
		long starttime = System.currentTimeMillis();
		
		int num[] = new int[10000];
		num[0] = 1;
		int n = Integer.parseInt(args[0]);
		for (int i = 1; i < n; i++) {
			int j = 0;
			int carry = 0;
			while (j < index) {
				num[j] *= i;
				num[j] += carry;
				carry = (num[j] / 10000);
				num[j] = (num[j] % 10000);
				j++;
			}
			if (carry > 0) {
				index = j + 1;
				num[j] = carry;
			}
		}

		for (int i = index - 1; i >= 0; i--) {
			String s = "";
			if (num[i] == 0)
				s = "0000";
			else if (num[i] < 10)
				s = "000" + num[i];
			else if (num[i] < 100)
				s = "00" + num[i];
			else if (num[i] < 1000)
				s = "0" + num[i];
			else
				s = "" + num[i];
			System.out.print(s);
		}
		System.out.println();
		long endtime = System.currentTimeMillis();
		System.out.println((endtime - starttime) + "(ms)");
		
		starttime = System.currentTimeMillis();
		BigInteger b = new BigInteger("1");
		for (int i = 1; i < n; i++) {
			BigInteger c = new BigInteger("" + i + "");
			b = b.multiply(c);
		}
		System.out.println(b);
		endtime = System.currentTimeMillis();
		System.out.println((endtime - starttime) + "(ms)");
	}
}

 

分享到:
评论

相关推荐

    大数阶乘数据结构算法课程设计-副本.pdf

    "大数阶乘数据结构算法课程设计" 本篇文章主要讲解了大数阶乘数据结构算法的设计和实现,包括数据的表示和存储、数据的操作及其实现等方面。通过本篇文章,读者可以了解到大数阶乘算法的基本原理和实现方法,并且...

    汇编语言实现的大数阶乘算法

    在编程领域,大数阶乘算法是一个挑战性的任务,尤其当使用低级语言如汇编时。汇编语言是计算机可以直接执行的机器码的一种符号表示,它提供了对硬件的直接控制,但编程复杂度较高。本篇文章将深入探讨如何利用汇编...

    大数阶乘(用单链表实现大数阶乘)

    "大数阶乘"是指计算一个较大的正整数的阶乘,这个数值通常超过了标准数据类型(如int或long)能表示的最大范围。在这个场景下,我们通常会采用特殊的表示方法,比如字符串或自定义的数据结构,例如单链表。以下将...

    【C#】求大数阶乘_算法_C#

    在编程领域,大数阶乘是一个常见的计算问题,特别是在算法设计和数学计算中。本话题主要探讨如何在C#环境中实现大数阶乘的计算,处理超过整型或长整型范围的数值。C#标准库并不直接支持大数运算,但我们可以利用各种...

    N!的求法 大数阶乘 最好的大数阶乘 C++

    的求法:大数阶乘的最佳C++实现 在计算机科学中,阶乘是一种常见的数学运算,表示为N!(其中N为非负整数),它是指所有小于及等于N的正整数的乘积。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。随着N的增加,N!的值会...

    大数阶乘 Visual C++ 链表实现

    本项目“大数阶乘 Visual C++ 链表实现”专注于解决大数阶乘的计算问题,利用链表数据结构来优化存储和运算效率。下面将详细介绍这个项目中的关键知识点。 一、大数阶乘 大数阶乘是计算一个大整数(通常超过普通...

    简单的java大数阶乘运算算法

    在编程领域,大数阶乘运算是一项挑战性的任务,特别是在Java这种不支持任意精度整数的语言环境中。然而,Java通过`BigInteger`类提供了处理大数的功能。本篇将深入探讨如何利用Java实现大数阶乘的计算,以及背后的...

    大数阶乘,基于数据结构的单链表实现

    在计算机科学领域,大数阶乘是一个常见的计算挑战,因为它涉及到处理超过常规整型范围的数值。本主题将深入探讨如何使用数据结构中的单链表来实现大数阶乘的计算,同时关注程序的执行效率。 单链表是一种基本的数据...

    c/c++大数阶乘

    在编程领域,尤其是在C或C++中处理大数阶乘是一项挑战,因为这些语言的内置整型类型(如int、long、long long)在面对大数运算时可能会导致溢出。为了解决这个问题,我们可以使用数组来存储大数,并自定义算法来实现...

    C++ 双链表 大数阶乘

    在编程领域,大数阶乘是一项挑战性的任务,特别是在使用如C++这样的低级语言时。本主题将深入探讨如何利用双链表来实现大数阶乘的计算,并讨论其性能和时间复杂度。 首先,我们需要理解双链表的基本概念。双链表是...

    大数阶乘(双向链表)c++

    在编程领域,大数阶乘是一项挑战性的任务,因为它涉及到计算非常大的整数的阶乘。在这个场景中,我们使用C++语言,并通过双向链表来解决这个问题。双向链表是一种数据结构,允许我们在列表中的节点之间进行前向和后...

    C++版本大数阶乘原理讲解及代码实现

    ### C++版本大数阶乘原理讲解及代码实现 #### 概述 在计算机科学领域,阶乘是一个常见的数学运算,表示为n! = n × (n-1) × ... × 1。对于较小的数值,如n ,普通的整型变量可以轻松处理。但当n值较大时,例如n &gt;...

    大数阶乘程序(VS2005实现)

    在编程领域,大数阶乘是一项挑战性的计算任务,因为它涉及到处理超过常规整型范围的数值。本项目“大数阶乘程序(VS2005实现)”提供了一个简单的解决方案,采用数组来存储和处理大数。在本文中,我们将深入探讨大数...

    阶乘计算 大数阶乘 大整数阶乘 用数组计算阶乘

    阶乘 阶乘计算 大数阶乘 大整数阶乘 用数组计算阶乘

    大数阶乘C++代码

    在编程领域,大数阶乘是一个经典的问题,特别是在计算数学和算法设计中。当我们尝试计算一个非常大的整数(如1000)的阶乘时,常规的数据类型,如int或long long,都无法容纳这样的结果,因为它们的位宽有限。在这种...

    用C++实现了大数阶乘及大数加法

    本项目中,开发者用C++实现了大数阶乘和大数加法,虽然大数乘法未成功,但我们可以深入探讨这两个功能的实现原理。 ### 大数阶乘 大数阶乘的实现通常涉及到动态规划和链表数据结构。在C++中,由于没有内置的大数...

    大数阶乘 C++数据结构

    在编程领域,大数阶乘是一项挑战性的任务,因为它涉及到处理非常大的数字并进行复杂的计算。在这个场景中,我们讨论的程序是用C++编写的,它利用了数据结构,特别是栈和双端队列(deque)来实现大数阶乘的计算。下面...

    C++ 实现大数阶乘的算法

    在编程领域,大数阶乘计算是一个常见的挑战,特别是在处理非常大的整数时。本篇文章将深入探讨如何使用C++的链表数据结构来实现大数阶乘算法。C++的`list()`模板是一种高效且灵活的数据结构,特别适合处理动态增长的...

    一个关于链表的大数阶乘

    在编程领域,大数阶乘是一个常见的计算问题,特别是在处理超过普通整型范围的大整数时。本项目涉及的核心知识点是使用链表来存储大数,并实现这些大数的阶乘计算。以下将详细讲解链表的基础知识,以及如何利用链表...

    大数阶乘用C++语言实现

    ### 大数阶乘用C++语言实现 #### 背景与意义 在计算机科学领域,阶乘是一个常见的数学概念,在很多算法和数学问题中都有应用,例如组合数学、概率论等。对于较小的数字,计算阶乘相对简单;但当数字变得非常大时,...

Global site tag (gtag.js) - Google Analytics