由于计算机数据表示大小的限制,在进行大数运算的过程中极有可能会发生数据溢出的危险,避免溢出的通用方法就是在大数运算中用数组来表示计算结果。
代码如下:
/******************************************** */ /* 算法思想转载自网络 */ /* 程序功能:大整数的阶乘 */ /**********************************************/ #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; }
参考资料:http://blog.csdn.net/liujinxunhappy08110/article/details/5518263
http://blog.csdn.net/yxnk/article/details/1665052