c++ 高精度乘法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c++ 高精度乘法

C++高精度乘法

一、算法要求

高精度乘法的算法要求求解两个任意长度数的积。

二、算法实现

1. 声明并初始化:定义一个char类型的数组存放数据,长度根据输入变化,取得结果存放在数组C[]中,数组A[]存放乘数,数组B[]存放被乘数,两个数累乘实际上是从高位到低位一位一位相乘,乘积累加存放在数组C[]中,T用来把乘数A[]和B[]乘的结果存放在C[]数组中。

2. 遍历被乘数:从后向前遍历B[],如果B[i]不为0,就利用其乘以乘数A[],将结果存放在C[]中,这里有一个进位,T即表示。

3. 将乘法结果加上进位:将乘数A[]和被乘数B[i]的结果加上之前的进位,存放在C[]数组中,同时计算当前的进位,如果两个数相乘的结果大于10,则需要进位,否则T=0。

4. 进位操作:最终的结果需要加上最后的进位,将最后算出来的进位和最后一位相加,存放在数组C[]中。

3. 算法示例

int A[]={6,3,4,5},B[]={9,8,7,6},C[8]; //将乘数A[]和被乘数B[]存放在数组A[],B[],C[]中,预先定义好结果数组C[]的长度

int T=0;//T用来表示进位,初始时T=0

for(int i=3;i>=0;i--)//从后向前遍历数组B[]

{

int temp=B[i]*A[3]+T;//把乘数A[]和被乘数B[i]的结果加上之前的进位,存放在C[]数组中

C[i+4]=temp%10;//将乘积的个位数存放在C[]中

T=temp/10;//计算当前的进位,如果两个数相乘的结果大于10,则T!=0

}

C[3]=T;//将最后一次的进位T加入到C[]中

for(int i=0;i<8;i++)

{

cout<

}

4. 算法特点

C++高精度乘法算法比较简单,易于理解。特点是求解任意两个任意长度数的乘积,被乘数只需要一次遍历即可。

相关文档
最新文档