java实现大数的乘法:
2015-09-13 22:17
423 查看
初学java,做了一道作业题,实现超大整数的乘法
乘法大家都会,但是用程序来实现却没有那么简单。
我的想法是:
两个大数,从末尾开始相乘,乘数依次与被乘数相乘然后移位相加
因此,我们可以先用循环做乘法,把每一次相乘的结果保存在数组中,然后再利用数组进行加法。
最后输出结果:15129
乘法大家都会,但是用程序来实现却没有那么简单。
我的想法是:
两个大数,从末尾开始相乘,乘数依次与被乘数相乘然后移位相加
因此,我们可以先用循环做乘法,把每一次相乘的结果保存在数组中,然后再利用数组进行加法。
</pre><p></p><p><span style="font-size:18px"></span><pre name="code" class="java">//import java.util.Scanner; public class HandLargeNumber { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int []a={1,2,3}; int []b={1,2,3}; int i=0,sum=0,k=0,j=0; int c[]=new int[a.length+b.length]; for(i=0;i<a.length;i++){ if(a[i]!=0){ k=i; break; } } for(i=k;i<a.length;i++){ System.out.printf("%d",a[i]); } System.out.printf("\n乘以:\n"); for(i=0;i<b.length;i++){ if(b[i]!=0){ k=i; break; } } for(i=k;i<b.length;i++){ System.out.printf("%d",b[i]); } /*循环相乘,先计算出各位的乘积*/ for(i=a.length-1;i>=0;i--){ for(j=b.length-1;j>=0;j--){ sum=a[i]*b[j]; /*用移位的方式,把各个位的乘积叠加*/ for(int x=i+j+1;x>=0;x--){ sum=c[x]+sum; if(sum<10){ //判断这一位的叠加和是否进位 c[x]=sum; break; } else{ c[x]=sum%10; sum=sum/10; } } } } System.out.printf("\n等于\n"); //输出结果 for (i = 0; i < c.length; i++) { if(c[i]==0&&i==0){} //舍去前面没有必要的0 else System.out.print(c[i]); } } }
最后输出结果:15129
相关文章推荐
- 我的Java Web作业---计算器作业
- Java基础知识1
- java文件图标变成空心J
- java
- 【springmvc+mybatis项目实战】杰信商贸-13.购销合同列表
- 重拾java系列一java基础(3)
- java笔记
- 【springmvc+mybatis项目实战】杰信商贸-12.重点知识回顾
- Eclipse下搭建Maven框架
- Java学习笔记---设计模式之抽象工厂模式
- zookeeper异常ConnectionLossException的解决办法
- 在myeclipse中导入图片
- 对Java中类的定义,继承等的自我理解
- java常用类与集合框架相关知识总结
- DispatcherServlet--Spring的前置控制器作用简介
- eclipse修改内存大小
- java-EnumMap、IdentityHashMap、WeakHashMap源码分析
- 近期对Java的理解
- 深入理解Java的接口和抽象类
- Java面向对象问题汇总