您的位置:首页 > 编程语言 > Java开发

java实现大数的乘法:

2015-09-13 22:17 423 查看
初学java,做了一道作业题,实现超大整数的乘法

乘法大家都会,但是用程序来实现却没有那么简单。

我的想法是:

两个大数,从末尾开始相乘,乘数依次与被乘数相乘然后移位相加

因此,我们可以先用循环做乘法,把每一次相乘的结果保存在数组中,然后再利用数组进行加法。

</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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: