当所给数相乘超过2^32次方时候,直接用乘法计算是得不到的。此时可以用整型数组来计算,其中数组中每个存一位。
例如:
a[20],b[20],c[40]存从低位到高位的数。a*b->c
先将c初始化为0:
for(j=0;j<20;j++){
for(k=0;k<a[j];k++){
for(i=0;i<20;i++)
c[i+j]+=b[i];
}
}
for(i=0;i<39;i++)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
如此即可得到乘机,然后从高到低逐位显示
for(i=39;c[i]==0;i--);
for(;i>=0;i--)
printf("%d",c[i]);
printf("\n");