您的位置:首页 > 其它

斯特灵公式在求素数方面的应用

2017-04-17 23:11 218 查看

斯特灵公式在求素数方面的应用:

公式的表现形式:



或更精确的







公式的作用:

斯特林公式(Stirling's approximation)是一条用来取n的阶乘的近似值的数学公式。

公式的应用:

求n!的位数:

利用斯特林(Stirling)公式的进行求解。下面是推导得到的公式:res=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );

当n=1的时候,上面的公式不适用,所以要单独处理n=1的情况!

这种方法速度很快就可以得到结果。

点击打开链接

#include<iostream>
#include<cmath>
using namespace std;
const long double c1=0.798179868358; //lg(2*pi)
const long double c2=0.434294481903; //lg(e)

int main()
{
int n,t;
cin>>t;
int s;
long double c3;//特别要注意精度的问题,此处c3应为long double型,否则很容易丢失精度,造成答案错误
for(int i = 0; i < t; i++)
{
cin>>n;
c3=log10((double)n);
if(t>3)
s=(c3+c1)/2+n*(c3-c2)+1;//由于10^0=1,10^1=10……,故在最后还要加一个1
//s=?发生自动类型转换,如10^2.5=x,则s=2+1,则说明x!介于10^2与10^3之间,位数为3!
else
s=1;
cout<<s<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐