大数相乘算法

来源:互联网 发布:linux查看历史命令 编辑:程序博客网 时间:2024/05/01 03:45

原文地址:http://hi.baidu.com/huifeng00/item/8a7ac81472d986028ebde496


C语言实现大数相乘

#include <string.h>#include <stdio.h>#define SIZE 50int a[SIZE],b[SIZE],c[SIZE*2];void big_multi(int a[],int b[],int c[]){int i,j;for (i=0;i<SIZE;i++)   for(j=0;j<SIZE;j++)    c[i+j] += a[i]*b[j];//这里计算每位对应的计算结果,暂不考虑进位   for (i=0;i<SIZE*2;i++)   {    c[i+1] += c[i]/10;//这里就是进位,因为每位/10的商就是进位    c[i] %= 10;//这里就是每位对应的最终结果   }}int main(){//两个大整数char A[] = "123456789";char B[] = "987654321";char C[2*SIZE];    int i = strlen(A)-1,j = strlen(B)-1;    int index,k=0;//把大整数存储到数组中去,从大数的最低位依次存储到数组中for (index = i;index >=0;index--)   a[i-index] = A[index]-'0';for (index = j;index >=0;index--)   b[j-index] = B[index]-'0';big_multi(a,b,c);//把结果存储到字符数组C中index = i+j+1;while (!c[index])   index--;    while (index!=-1)    {   C[k++] = c[index--]+'0';    }C[k] = 0;printf("%s * %s : \n%s\n",A,B,C);return 0;}


原创粉丝点击