#include #include #include #include #define DATASIZE 1000 //该函数用以接收用户输入的大整数,返回值为该大整数的数字位数 int InputBigInt(int arr[]) { char ch; int i=0; printf("Input a Big Interger:"); while(1) { scanf("%c",&ch); if(ch=='\n') break; else arr[i++]=ch-'0'; } return i; } //该函数通过在较短的大整数之前填充0 的方式,将两个大整数的位数对齐,返回值为较长的那个大整数的位置 int AlignArray(int *a,int len_a,int *b,int len_b) { int len_align=len_a; if(len_a>len_b) { for(int i=len_b-1;i>=0;i--) b[i+(len_a-len_b)]=b[i]; for(int i=0;i=b[i]) { c[i]=a[i]-b[i]; borrow=0; } else { int t=a[i]+10-b[i]; borrow=1; } } return length; } //分治法求两个大整数的乘积,它只需要更少次数的乘法,但是它必须递归 int DividBigIntMultiply(int a[],int b[],int c[],int len) { int l=len/2; if(len==1) { int t=a[0]*b[0]; c[0]=t/10; c[1]=t%10; return 2; } else if(len==2) { int t1=a[1]*b[1]; c[3]=t1%10; int