大数相乘算法

1、计算两个大数相乘的结果。
2、算法流程:
(1)大数可能超出任何一种整数类型,会引发溢出问题,所以用字符串的格式存储数a,b;
(2)计算字符串a的的长度aLen即位数,计算字符串b的长度bLen.
(3)两个数相乘最大为aLen+bLen,整形sumLen=aLen+bLen;
(4)声明字符数组maxArr用于保存a,b中的更大者,声明整形maxLen保存a,b长度的更大者。声明字符数组minArr用于保存a,b中的更小者,声明整形minLen保存a,b长度的更小者。如下所示:


image.png

(5)创建整形数组sumArr用于保存相乘后的结果,创建整形数组tmpArr保存数a的某一位与数b各位相乘的结果,如下所示:


image.png

(6)更小的数minArr的各位(个位,十位,百位,千位等)依次和更大数minArr的各位相乘并存储在临时数组tmpArr中
image.png

3、具体代码:

#include 
#include 
using namespace std;
int main()
{
 char* a="9999999";
 char* b="9999999";
 int aLen=strlen(a);
 int bLen=strlen(b);
 int sumLen=aLen+bLen;
 cout << "aLen="<

你可能感兴趣的:(大数相乘算法)