大整数的乘法与阶乘运算

来源:互联网 发布:unity3d 像素模型 编辑:程序博客网 时间:2024/06/11 00:12
int main(){int BigInt[1000];int n = 1;printf("输入所求阶乘:");scanf("%d",&n);BigInt[0] = 1;int digit = 1;//大整数的位数int temp ;int carry;//进位for(int i=2 ; i<=n ; i++){//遍历区间[2,n]carry = 0;//---乘法与进位123*i可以分解为3*i+20*i+100*i,注意进位for(int j=1 ; j<=digit ; j++){temp = BigInt[j-1]*i + carry;BigInt[j-1] = temp%10;carry = temp/10;}while(carry){digit++;BigInt[digit-1] = carry%10;carry = carry/10;}}for(int i=digit ; i>=1 ; i--)printf("%d",BigInt[i-1]);printf("\n");return 0;}
上面的求大整数阶乘方法是根据1234*58可以分解为4*58+30*58+200*58+1000*58得到,注意到进位需要累加至下次计算中。
0 0