大数相乘问题
之前看有人求助关于100的阶乘的代码,当时没考虑那么多,以为用一个Long 型的变量就够了。今天想起来了,写了一个大数相乘的代码,运行起来貌似没什么错,百度了下相关的代码,发现其他人写的都比我这个长很多。我贴出来大家看看,看看有什么问题。
#include<iostream>
#include<string>
#include<string.h>
#include<malloc.h>
using namespace std;
int *mutiply(char *a,char *b)
{
int m,n;
m=strlen(a);//得到输入数字的长度
n=strlen(b);//得到第二个数字的长度
int *c=(int *)malloc(sizeof(int)*(m+n));//开辟一个足够存储乘积长度的数组
int temp=0;//用来存储进位
for(int i=0;i<=m-1;++i)
{ for(int j=0;j<=n-1;++j)
{
c[m+n-i-j-1]=c[m+n-i-j-1]+((a[m-i-1]-'0')*(b[n-j-1]-'0'))+temp;
if(c[m+n-i-j-1]>9)
{
temp=c[m+n-i-j-1]/10;
c[m+n-i-j-1]=c[m+n-i-j-1]%10;
}
else
temp=0;
}
}
for(int i=1;i<(m+n);++i)
{
cout<<c[i];
}
cout<<endl;
return c;
}
int main()
{
char a[100000];
char b[100000];
cout<<"input the first big number!!!"<<endl;
cin>>a;
cout<<"input the second big number!!!"<<endl;
cin>>b;
cout<<"the answer is:";
mutiply(a,b);
return 0;
}