由于计算机数据表示大小的限制,在进行大数运算的过程中极有可能会发生数据溢出的危险,避免溢出的通用方法就是在大数运算中用数组来表示计算结果 ,我总结了一下相关的大数运算常见问题,今天是第一篇,大数的阶乘。 代码如下: /******************************************** */ /* 算法思想转载自网络 */ /* 日期: 2010/04/24 */ /* 目的: 编程练习 */ /* 程序功能:大整数的阶乘 */ /**********************************************/ #include <iostream.h> #define MAX 1000 int re[MAX];//可以处理最大阶乘结果位数为1000,可根据实际情况修改 void factorial(int x) { int len=1,i,carry; re[0]=1; //初始re[0]赋值1 for(int mul=2;mul<=x;mul++) { //阶乘从2开始循环 for(i=0;i<len;i++) {//初步计算,临时结果的每一位都乘以i re[i]*=mul; } carry=0; //进位值 for(i=0;i<len;i++) { //循环进位 re[i]+=carry; carry=re[i]/10; re[i]%=10; } while(carry>0) { //最高位进位 re[len++]=carry%10; carry/=10; } } for(i=len-1;i>=0;i--) cout<<re[i]; cout<<endl; } int main() { factorial(50); return 0; }