大数相乘过程
首先说一下乘法计算的算法:是模拟人工计算时的方法。
从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,记录结果之后,用第二位相乘,记录结果并且左移一位,以此类推,直到计算完最后一位,再将各项结果相加,得出最后结果。
计算的过程基本上和小学生列竖式做乘法相同。为编程方便,并不急于处理进位,而将进位问题留待最后统一处理。
我们以125*53为例来说明计算过程:
1、125乘个位数3,3*5得到15个1,3*2得到6个10,3*1得到3个100;
2、125乘十位数5,3*5得到15个1,3*2得到6个10,3*1得到3个100;
3、求和过程。接下来从 a[0]开始向高位逐位处理进位问题。a[0]留下5,把1 加到a[1]上,a[1]变为32 后,应留下2,把3 加到a[2]上……最终使得a里的每个素都是1 位数,结果就算出来了
结果就是6625。
大数乘法规律
- 即一个数的第i 位和另一个数的第j 位相乘所得的数,一定是要累加到结果的第i+j 位上。这里i, j 都是从右往左,从0 开始数。
- 即:ans[i+j] = a[i]*b[j];
- 进位时要处理,当前的值加上进位的值再看本位数字是否又有进位;前导清零。
源码实现
- 头文件以及全局数据变量
- .因为大树过长,所以采用字符串存储, 故要将字符串中字符转化为数字,并倒序储存
- 描述计算过程,将因数各个位上的数字与另一个各个位上的数字相乘
- 进位处理:每一位上超过10的都进位处理
- 收尾整理:删除0的前缀
- 逆序输出,检验结果
运行简单检验
计算机无法现实,又兴趣的可以测试下稍微小一点的数字。好了,今天的大数相乘就到这里了。
更多精彩
1000+C语言代码写2048小游戏
号称史上最虐心游戏,C/C++编写过气小游戏飞翔的小鸟
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16413.html