`

超长整数运算(大数运算)

阅读更多
package qinglin.learn.arithmetic;

public class BigNumberCalculation
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		int a[]=new int[]{5234,5678,2234,5678};
		int b[]=new int[]{345,1458,3423,2345};
		int c[]=new int[4];
		BigNumberCalculation calculation = new BigNumberCalculation();
		//calculation.add(a, b, c);
		//calculation.subtraction(a, b, c);
		//calculation.multiplication(a, 5, c);
		calculation.division(a, 2, c);
		for(int i=0;i<c.length;i++)
		{
			System.out.print(c[i]+"\t");
		}
		
	}
	public void add(int a[],int b[],int c[])
	{
		int m=a.length;
		int k=c.length;
		int carry=0;
		for(int i=m-1;i>=0;i--)
		{
			c[--k]=a[i]+b[i]+carry;
			if(c[i]>10000)
			{
				carry=1;
				c[k]=c[k]-10000;
			}
			else
			{
				carry=0;
			}
		}
		if(c.length>m&&c[k]>10000)
		{
			c[k]=c[k]-10000;
			c[--k]=1;
		}
	}
	public void subtraction (int a[],int b[],int c[])
	{
		int m=a.length;
		int carry=0;
		for(int i=m-1;i>=0;i--)
		{
			c[i]=a[i]-b[i]-carry;
			if(i>0)
			{
				if(c[i]<0)
				{
					carry=1;
					c[i]=c[i]+10000;
				}
				else
				{
					carry=0;
				}
			}
		}
	}
	public void multiplication(int a[],int b,int c[])
	{
		int m=a.length;
		int k=c.length;
		int carry=0;
		int temp=0;
		for(int i=m-1;i>=0;i--)
		{
			temp=a[i]*b+carry;
			carry=temp/10000;
			c[--k]=temp%10000;
		}
		if(c.length>m&&carry!=0)
		{
			c[--k]=carry;
		}
	}
	public void division(int a[],int b,int c[])
	{
		int m=a.length;
		int remain=0;
		for(int i=0;i<m;i++)
		{
			c[i]=(a[i]+remain)/b;
			remain=a[i]%b*10000;
		}
	}
}
分享到:
评论

相关推荐

    C经典算法之超长整数运算(大数运算)

    基于记忆体的有效运用,程式语言中规定了各种不同的资料型态,也因此变数所可以表达的最大整数受到限制,例如123456789123456789这样的 整数就不可能储存在long变数中(例如C/C++等),我们称这为...或俗称大数运算。

    C++ 大整数运算库(附源码)

    用于运算、输出大整数的C++库,使用简便,即下即用,已重载各类运算符,支持ostream(cout)输出和字符串输出、字符串构造、最大公约数和最小公倍数计算。 具体用法、函数说明可以在文件夹中的README.txt中找到

    128位大整数运算源代码

    源代码包含128位大整数的加减乘除、取模、乘幂、2进制和10进制转换等运算,可用于大整数运算和加解密算法。

    C语言编写无符号大整数运算

    使用c语言实现的无符号大整数的加、减、乘、除(取整和求余运算),可直接运行

    c语言大整数运算

    由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值...大数运算主要有加、减、乘三种方法,该资料主要是利用C语言来解决大整数计算的问题

    c++ 控制台 实现大数运算, 任意位整数运算

    该程序实现了 (1) 实现int单参数构造函数,从int构造...(4) 实现整数类之间的加、减、乘、除操作符及相应复合赋值操作符; (5) 实现==、!=、&gt;、&gt;=、&lt;、操作符; (6) 实现十进制、十六进制、二进制输出整数值;

    大数运算(整数、浮点)

    这个C#库中包含两个类,ComputeStringFloat和ComputeStringInt,分别是整数运算和浮点运算,已经重载了+-*/四则运算,以及&gt;,&lt;,&gt;=,,==,!=比较运算,支持直接将字符串赋值给这个类,如果需要源代码,请前往...

    双向循环链表来实现长整数四则运算

    选择该数据结构来完成长整数的加减运算是因为要对长整数进行运算,需要对长整数进行存储,所以选择用链表对长整数存储,又由于存储的顺序是从左到右,而运算的顺序则是从右到左,这样位了操作方便选择循环链表,在...

    大整数运算源码

    大整数运算主要考察熟练掌握队列的类型定义和基本操作(以队列初始化、入队、出队等操作为重点)的实现,该源码实现了加减乘除运算,我的博客也有文章详细介绍了高精度运算,希望能够大家理解有些帮助。

    密码学RSA 算法源码及大数运算的实现原理

    密码学 RSA 算法 c语言源码 大数运算 实现原理 很不错的 运行过

    高精度大数运算类

    该大数运算类是一个支持超高精度和超大数的基本运算类,最高精度能够达到一百亿位有效数字,最大能够表示10的2147483648次方,支持基础的四则运算和比较运算。该类的特点是使用指数形式表示数据,应此空间占用少,...

    大数运算c++

    设计一个“大数类”(LargeNumber),使它支持对任意大整数的输入、输出和基本运算(+,-,×,÷,=,++,--,^)。 1. “大数”能以字符串的方式存储在文件中,并能将其读入内存,实现字符与数值的转化,...

    C语言实现的大整数基本运算库

    该静态库包含大整数运算的基本操作,可以自己设置计算数的长度。目前该库只包含加减乘除,输入,输出和大数比较操作

    C语言大整数的加减法运算

    大整数的加减法运算

    c语言大数相加

    经典大数相加问题,解决数据相加太短的问题

    最大公因数 大数运算类.rar

    Mov,赋值运算,可赋值为大数或普通整数,可重载为运算符“=” Cmp,比较运算,可重载为运算符“==”、“!=”、“&gt;=”、“”等 Add,加,求大数与大数或大数与普通整数的和,可重载为运算符“+” Sub,减,求大数...

    大数运算器 可做逆运算

    加,减,乘,模,逆运算,在进行大数运算时会比较方便

    大整数运算 gmp 开发文档5.0.0~6.1.2

    大整数运算gmp库说明文档,版本由5.0.0到6.1.2 GMP是一个免费的库,用于任意精度算术,对有符号整数,有理数和浮点数进行操作。精度没有实际限制,除了机器GMP中可用内存所暗示的那些限制。GMP具有丰富的功能,并且...

    C#编写的大数乘法运算原代码

    C#编写的大数乘法运算原代码 运行环境VS

    大数浮点数幂运算(c++实现)

    自己写得大数浮点数幂运算(c++实现),系poj acm 的problem:1001的实现

Global site tag (gtag.js) - Google Analytics