分治法——大整数相乘

Posted 栽种绝处的花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治法——大整数相乘相关的知识,希望对你有一定的参考价值。

#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();
}

以上是关于分治法——大整数相乘的主要内容,如果未能解决你的问题,请参考以下文章

分治法——大整数相乘

数组乘法(大整数相乘)

大整数乘法(分治法)

算法笔记_003:矩阵相乘问题分治法

算法导论分治思想—大数乘法矩阵相乘残缺棋盘

分治法实现两个方阵相乘