微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数阶乘

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

代码如下:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐