大数值阶乘计算函数

来源:互联网 发布:linux文件重命名命令 编辑:程序博客网 时间:2024/06/04 17:57

      阶乘往往由于数值巨大而无法用一个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万大数阶乘:

 

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

原创粉丝点击