菜鸟的大数阶乘的位数公式计算

来源:互联网 发布:金融网络销售美女骗局 编辑:程序博客网 时间:2024/04/28 23:48

斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。



Stirling

公式计算

n!

结果的位数时,可以两边取对数,得:

 

log10(n!) = log10(2*PI*n)/2+n*log10(n/E); 

故n!的位数为

log10(2*PI*n)/2+n*log10(n/E)+1(注意:当n=时,算得的结果为0)

用Stirling公式计算n!结果的位数时,可以两边取对数,得: log10(n!) = log10(2*PI*n)/2+n*log10(n/E); 
故n!的位数为 log10(2*PI*n)/2+n*log10(n/E)+1(注意:当n=1时,算得的结果为0)

代码如下:

#include<cstdio>#include<iostream>#include<cmath>#define PI 3.1415927const double E=exp(double(1));using namespace std;int main(){    int t,m,i,j,n;    double sum;    scanf("%d",&t);    while(t--)    {       scanf("%d",&n);       if(n==0)       {           cout << "1" << endl;           continue;       }       int len = int(log10(sqrt(2*PI*n))+n*log10(n/E))+1;       cout << len << endl;    }    return 0;}

顺带说下今天刚学的函数EXP函数。

exp函数————求以自然数e为底的指数值。

代码如下:

#include<cstdio>#include<iostream>#include<cmath>using namespace std;int main(){    double x=1.0;      cout << exp(x) << endl;    return 0;}
就是我们上数学时说的log以e为底的数。


0 0
原创粉丝点击