大数阶乘

由于计算机数据表示大小的限制,在进行大数运算的过程中极有可能会发生数据溢出的危险,避免溢出的通用方法就是在大数运算中用数组来表示计算结果。

代码如下:

/******************************************** */ 
/*    算法思想转载自网络                       */
/*    程序功能:大整数的阶乘                  */                  
/**********************************************/
#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

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...