大数的乘法。。
#include <stdio.h>#include <string.h>
void main()
{
int result[100][100],i,len1,len2,cbit=0,k,lenr,l=0,temp,cout=0,t,n;
char num1[100]="",num2[100]="";
gets(num1);
gets(num2);
len1=strlen(num1);
len2=strlen(num2);
lenr=len1+len2-1;
t=lenr;
for(i=0;i<=99;i++)
{
for(k=0;k<=99;k++)
result[i][k]=-1;
}
for(i=len2-1;i>=0;i--)
{
for(k=len1-1;k>=0;k--)
{
temp=(num1[k]-48)*(num2[i]-48)+cbit;
if(temp<=9)
{
result[cout][t-l]=temp;
l++;
cbit=0;
}
else if(temp>=10)
{
result[cout][t-l]=temp%10;
temp/=10;
cbit=temp;
l++;
}
}
if(cbit!=0)
result[cout][t-l]=cbit;
cout++;
l=0;
t--;
cbit=0;
}
printf("\n");
for(i=len1;i<=lenr+1;i++)
printf(" ");
printf("%s\n",num1);
printf("x");
for(i=len2;i<=lenr;i++)
printf(" ");
printf("%s\n",num2);
for(i=0;i<=lenr+1;i++)
printf("-");
printf("\n");
for(i=0;i<=cout-1;i++)
{
printf(" ");
for(k=0;k<=lenr;k++)
{
if(result[i][k]!=-1)
{
for(n=0;n<=len1+1;n++)
{
if(result[i][k+n]!=-1)
printf("%d",result[i][k+n]);
}
break;
}
printf(" ");
}
printf("\n");
}
for(i=0;i<=lenr+1;i++)
printf("-");
printf("\n");
getch();
}
大数的乘法,还差最后求和一步没写,我的方法大家一看就懂,就是小学算法,有没有其他的算法?
输入两个大数:
852112115498455
11458912540545
结果: