大数值阶乘计算函数

      阶乘往往由于数值巨大而无法用一个long int或者double类型数据保存。近日无聊写了个大数值阶乘的计算函数,理论上只要内存足够,能够计算出任何数值的阶乘,但实际上100万以上的阶乘计算不管是时间消耗还是内存消耗都是极为惊人的,建议使用该函数计算100万以下的阶乘。

      为了有足够的空间保存结果,用一个vector<unsigned long int>保存,每个unsigned long int保存8位结果,vector大小由结果位数决定。本程序主体主要包含两个函数,阶乘计算函数和结果显示函数,定义在Factorial.h中。

      代码如下:

 

        测试代码main.cpp:

 

        经过测试,10万的阶乘计算时间为274489ms,即4分34秒。这个速度受电脑配置影响,这是在E5300,2G DDRII 800的硬件条件下测试出来的。

        下面是测试结果图:

         小数阶乘:

 

         1000阶乘:

         下面是系统计算机计算1000!的阶乘结果:

 

         1万大数阶乘,耗时1529毫秒:

 

         10万大数阶乘:

 

      该函数计算阶乘速度不算很快,还有很大的改进空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值