如何用C++编写大数的乘法

来源:百度知道 编辑:UC知道 时间:2024/05/30 04:10:28
如何C++编写大数的乘法?急求!!!!
可否告诉我这个算法如何表示???

说明:这是c程序,程序就是算法,这个程序思路非常清晰。就是模拟手动算法,被乘数与乘数的各位分别相乘,然后移位相加。程序已有详细注释。为简化程序,在程序中已设定被乘数和乘数,你可以更改也可以添加输入语句输入。这不是问题。
思考:个人认为为简化计算,应使得被乘数大于乘数,当输入的乘数大于被乘数时,可先将两数调换再相乘。调换也就是个swap()函数之类,我没加进程序里,这个你可以做到,这也不是问题。如程序有不足之处密我。
/* 大数相乘,win-tc和Dev-c++下调试通过 */
#include<stdio.h>
#include<string.h>

/* 函数声明 */
void calc1(char* str1,int len1,int* tmp,int m);
void accumulate(int cnt,int* res,int res_len,int* tmp,int tmp_len);
char* bignum_multi(char* str1,int len1,char* str2,int len2,char* result,int len);

int main()
{
int i,j;
/* 获取计算数据(可以从文件中读取) */
char str1[]="123456789987";
char str2[]="987456123";
char* result;

/* 计算两个字符串的长度,及存储结果所需要的空间 */
int len1=strlen(str1),len2=strlen(str2);
int len=len1+len2;

/* 分配并初始化字符串数组 */
result=(char*)malloc(len*sizeof(char));
for(i=0;i<len;i++)
*(result+i)='0';

/* 计