关闭

java数据结构之顺序表应用之大整数求和

标签: java数据结构 大整数
488人阅读 评论(0) 收藏 举报
分类:

本章讲顺序表的应用之大整数求和。java中int,long,float,double都有他们自己的精度值,如果超过精度就没办法进行运算了。这里可以用顺序表进行大整数运算。

下面上代码看具体案例,进行解析:

package SequenceList;
public class LargeIntegerSum {
	public int[] add(int aa[],int bb[]){
		int[] a=new int[aa.length];
		int[] b=new int[bb.length];
		for(int j=aa.length-1;j>=0;j--){
			a[aa.length-1-j]=aa[j];
		}
		for(int j=bb.length-1;j>=0;j--){
			b[bb.length-1-j]=bb[j];
		}
		int a_length=a.length;
		int b_length=b.length;
		int c_length=0;
		if(a_length>b_length){
			c_length=a_length;
		}else{
			c_length=b_length;
		}
		int[] c=new int[c_length];
		int flag=0;
		int i=0;
		while(i<a_length && i<b_length){
			c[i]=(a[i]+b[i]+flag)%10;
			flag=(a[i]+b[i]+flag)/10;
			i++;
		}
		for(;i<a_length;i++){
			c[i]=(a[i]+flag)%10;
			flag=(a[i]+flag)/10;
		}
		for(;i<b_length;i++){
			c[i]=(b[i]+flag)%10;
			flag=(b[i]+flag)/10;
		}
		if(flag==1){
			int[] temp=c;
			c=new int[c_length+1];
			for(int ii=0;ii<temp.length;ii++){
				c[ii]=temp[ii];
			}
			c[c.length-1]=1;
		}
		int cc[]=new int[c.length];
		for(int j=cc.length-1;j>=0;j--){
			cc[cc.length-1-j]=c[j];
		}
		return cc;
	}
	public static void main(String[] args) {
		LargeIntegerSum l=new LargeIntegerSum();
		int a[]={9,2,3};
		int b[]={9,1,9};
		int[] c=l.add(a, b);
		for(Integer i:c){
			System.out.print(i);
		}
		System.out.println();
	}
}
本案例是通过数组来存储大整数的,可以运算特别大的加法运算。

如果有什么不清楚或者有啥疑问意见可以加我QQ/微信  208017534  / qiang220316,欢迎一起交流一起进步。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:378374次
    • 积分:4339
    • 等级:
    • 排名:第7305名
    • 原创:110篇
    • 转载:39篇
    • 译文:0篇
    • 评论:116条
    最新评论