实用代码如下: void multiply(int a[],int b) //大数乘法(万进制) { int array=0; for(int i=99;i>=0;i--) //在这里面a[99]相当于个位 { // b 从99到0 依次 * a[i] array += b*a[i]; a[i] = array%10000; array /= 10000; } } void divide(int a[],int b) //大数除法(万进制) { int div=0; for(int i=0;i<100;i++) { div =div * 10000 + a[i]; a[i] = div/b; div%=b; } }
以下面的例子为准: 107924372*15=1618865580。
①上面的乘法如果运用10进制,很简单。直接按照我们原先学的算就可以了。 ②万进制呢? 首先存数:a[0]=4372,a[1]=792,a[2]=1。107924372,从低位到 高位每四位存到一个数组元素中。此时,总位数为3。 接着运算:a[0]*15=65580,所以进位为a[0]/10000=6 ,a[0]=a[0]%10000=5580。a[1]*15=11880,a[1]=a[1]+6=11886。 进位为1,a[1]=1886。a[2]*15=15,a[2]=a[2]+1=16,进位为0。 输出:a[2],a[1],a[0]即为1618865580。要注意的是:如果a[2]=886, 那么该如何输出?直接输出:168865580。显然不对, 正确的是16088655880。输出的原则是:最高位原样输出,其它位如果小 于1000,则高位补0,一位一补。