Java之大数加减乘除——乘法

发布时间 2023-04-17 00:11:18作者: 杪冬的鸡汤不好喝

在设计大数加减乘除的时候我是先写的加法,然后写乘法,再写减法和除法的。

原因很简单,乘法可以用加法表示,比如3*4=3+3+3+3,这样来看,那其实就是利用循环+加法来做乘法。

void multi(BigLong b){
int ia=this.num.length;
int ib=b.num.length;
int[] longl=b.num;
int[] shortl=this.num;
int m=ib,n=ia;
if(ia>ib){
m=ia;
longl=this.num;
n=ib;
shortl=b.num;
}
int[] count=new int[m+n-1];
int i,j;
for(i=n-1;i>=0;i--){
for(j=m-1;j>=0;j--){
count[i + j] += shortl[i] * longl[j];
}
}
for(i=m+n-2;i>0;i--){
if(count[i]>9){
count[i-1]+=count[i]/10;
count[i] %= 10;
}
}
for(i=0;i<count.length;i++){
System.out.print(count[i]);
}
}

我这样的算法不知道会不会很麻烦,因为涉及到循环了,特别是大数,但目前我这里运行的速度还是快的。