大数乘法

作者在 2013-05-27 19:17:43 发布以下内容
#include<stdio.h>
#include <string.h>
void bigintmul(char a[],char b[])
{
int tempa[100]={0},tempb[100]={0},temp[200]={0},carry=0,i,j,m,n,num,k;
m=strlen(a);
n=strlen(b);
num=n+m;

for(i=m-1;i>=0;i--)
    tempa[m-1-i]=a[i]-'0';//a数组的个位保存在temp[0],...

for(i=n-1;i>=0;i--)
    tempb[n-1-i]=b[i]-'0';

for(j=0;j<m;j++)
{
    for(i=0;i<n;i++)
        temp[i+j]+=tempb[i]*tempa[j];
}



for(k=0;k<num;k++)
{

    temp[k]+=carry;
    carry=temp[k]/10;
    temp[k]%=10;
}

if(temp[num-1]) //高位
    printf("%d",temp[num-1]);

for(i=num-2; i>0;i--)
printf("%d",temp[i]); 

}
int main()
{
char a[100],b[100];
printf("a数 : ");
gets(a);
printf("b数 : ");
gets(b);
printf("积数: ");
bigintmul(a,b);
printf("\n");
return 0;
}

数据结构及算法 | 阅读 2505 次
文章评论,共0条
游客请输入验证码
浏览239373次
最新评论