|
大数竖式相除
在中小学我们都学习过多位数的竖式除法,
对于16位以上的高位除法,在16位数字计算系统中再用直接相除法就得不到精确的数字解了,
为利用16位数字系统中的Excel进行计算,我模仿通用的多位数的竖式除法设计出了一种
高位大数的竖式除法程序——
1、选定要相除的两个大数之后,首先将两个大数从右向左分节,可按每7位(或6位)分成一节。
(因16位数字计算系统只能处理15位有效数字,故每节位数不能超过7节)
2、将被除数、除数分别排列在计算表的第1、第2行,每小节数字占据一个单元格。
3、计算表的第3行用于放置相除的商(试商)。
被除数:a1 a2 a3 a4 a5 a6,除数:b1 b2 b3,商:c1 c2 c3
4、试商一c1——取除数的第1节除以被除数的前2节的整数部分(int(a1*10^7+a2)/b1);
当b1较小时宜取除数的第2节除以被除数的前3节的整数部分(int(a1*10^14+a2*10^7+a3)/(b1*10^7+b2)。
5、相乘——分别用试商一c1乘以除数的各节,将相乘之积d11=c1*b1,d12=c1*b2,d13=c1*b3放置到第4行的a2 a3 a4之下(空出一个单元格);
6、进位——由于乘积d11,d12,d13的位数一般都要高于7位,接着需要对乘积进行一次进位处理,
将乘积变成e10,e11,e12,e13多一节的乘积数;
7、相减——分别用a1 a2 a3 a4减去e10 e11 e12 e13,得到差数f10 f11 f12 f13;
若f10是负数则需要手动调减c1,直至差f10=0,f11>0。
8、借位——如果差数f11 f12 f13中有负数则需向上借一个或几个数,使之各个差数都是正数,
借位后的差数变为g11,g12,g13,同时将被除数中的a5复制下来放到g13后,该行各节数字就是下一级的被除数。
9、试商一c2——取除数的第1节除以一级差数的前2节的整数部分(int(g11*10^7+g12)/b1);
当b1较小时宜取除数的第2节除以一级差数的前3节的整数部分(int(g11*10^14+g12*10^7+g13)/(b1*10^7+b2)。
10、相乘——分别用试商一c2乘以除数的各节,将相乘之积d21=c2*b1,d22=c2*b2,d23=c2*b3放置到第8行的a3 a4 a5之下(空出2个单元格);
11、进位——由于乘积d21,d22,d23的位数一般都要高于7位,接着需要对乘积进行一次进位处理,
将乘积变成e20,e21,e22,e23多一节的乘积数;
11、相减——分别用g11 g12 g13 a5减去e20 e21 e22 e23,得到差数f20 f21 f22 f23;
若f20是负数则需要手动调减c2,直至差f20=0,f21>0。
12、借位——如果差数f21 f22 f23中有负数则需向上借一个或几个数,使之各个差数都是正数,
借位后的差数变为g21,g22,g23,同时将被除数中的a6复制下来放到g23后,该行各节数字就是下一级的被除数。
13、第3级试商、相乘、进位、相减、借位与第2级试商、相乘、进位、相减、借位方法相同;
14、最后一级借位处理后的差数就是两大数相除后的余数。
|
|