大数除法
简单举例
以7546除23为例。
先减去23的100倍,就是2300,可以减3次,余下646。 此时商就是300;
然后646减去23的10倍,就是230,可以减2次,余下186。此时商就是320;
然后186减去23,可以减8次,此时商就是328.
原因说明
对于大数除法来说其本质上也是大数减法的一种延续,我们除以一个数字可以采用多次减去该数,而能减去的次数便是我们所需要的商,但是一个很大的数反复减去一个比它小的数字,这样计算的效率太低了。
于是我们采用减去除数的$10^n$来进行计算,通过这样的多次减法运算,将每次减的次数乘以$10^n$便是此次过程中的商,当我们减完之后会得到多个商(每次减的次数乘以$10^n$后的结果),我们将其加起来便可以得到我们需要的商。
1  |  | 
拿上面的代码再举一个例子
50/3
我们最先将余数初始为0,之后进入到对应的循环for中,第一次beichu等于5(之前的输入函数已经将输入的数据反序了),那么能够减去的次数为1,之后余数为2,此时c.s[]的最后一位存储的便是1,我们第二次进入到循环中去,此时的beichu便变为了20(2*10+0),再经过一次除可以得到是6,此时c.s[]的倒数第二位存储的便是6,之后我们将c.s[]的长度,假设为len进行获取,第一位(下标为0)乘以$10^{len}$次方,之后每次将其len减一,后面一项乘以相应的10的次方便可以啦,最后将每次乘出来的结果进行相加便可以了。
大数除法
      https://equinox-shame.github.io/2022/07/01/大数除法/