分治法——大整數相乘
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
void compute(char d1[],char d2[],char sum[])
{
int result[100]={0},i,j,inx=0,income=0,len=strlen(d1)+strlen(d2)-1;
char temp;
for(i=0;i<strlen(d2);i++)
for(j=0;j<strlen(d1);j++)
{
result[j+i]+=(d1[j]-‘0‘)*(d2[i]-‘0‘);
}
for(j=len-1;j>=0;j--)
{
sum[inx++]=(result[j]+income)%10+‘0‘;
income=(result[j]+income)/10;
}
if(income>0)
{
while(income>0)
{
sum[inx++]=income%10+‘0‘;
income=income/10;
}
}
sum[inx]=‘\0‘;
for(i=0,j=strlen(sum)-1;i<j;i++,j--)
{
temp=sum[i];
sum[i]=sum[j];
sum[j]=temp;
}
}
main()
{
char d1[10]="8216547",d2[10]="96785",sum[100];
compute(d1,d2,sum);
printf("sum:%s\n",sum);
getch();
}
分治法——大整數相乘