有关于大数除法的运算可以大致分为两种:一种是求商,另一种是求余数(取余)。
有两个大整数a和b,当a==b时,a/b==1,余数是0。(a!=0,b!=0)
当a>b时,a/b>=1,余数需要通过计算求得。
当a<b时,a/b=0,余数就是a。
而我们经常需要求的便是当a>b,这种情况我们该如何求商和余数呢?
其实基本的思想就是反复做减法,看看从被除数里最多能减去多少个除数,商就是多少。一个一个减显然太慢,如何减得更快一些呢?
以28536 除以23 为例来看一下:开始商为0。
先减去23 的1000 倍,就是23000,发现够减1 次,余下5536,于是商的值就增加1000;
然后用5536减去2300,发现够减2 次,余下936,于是商的值增加200,即1200;
再用936 减去230,够减4 次,余下16,于是商值增加40,即1240。
最后,发现余下的数比23小,即为余数,即28536 / 23 得1240余16。
这时,你会发现这其实就是咱们人工计算时相当于列的竖式。
另外,注意:我