加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数阶乘

发布时间:2020-12-14 02:50:31 所属栏目:大数据 来源:网络整理
导读:由于计算机数据表示大小的限制,在进行大数运算的过程中极有可能会发生数据溢出的危险,避免溢出的通用方法就是在大数运算中用数组来表示计算结果。 代码如下: /******************************************** */ /* 算法思想转载自网络 *//* 程序功能:大

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

代码如下:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读