美文网首页
斯特林公式(对数的简便求法)1018

斯特林公式(对数的简便求法)1018

作者: 碧影江白 | 来源:发表于2016-08-03 22:43 被阅读103次

求一个大数的阶乘位数,直接求阶乘直接超出,故需要用公式:

直接求阶乘,该数不用保存,直接取对数加一便可。

log10,得到的是log10(n!) = log10(2*pi*n)/2+n*log10(n/e)

所以其位数应该可以表示为: log10(2*pi*n)/2+n*log10(n/e)+1

或者有:log10(a*b*c*d)=log10(a)+log10(b)+log10(c)+log10(d)

累加的方法得到。

#include<stdio.h>

#include<math.h>

#define pi 3.1415926

void main()

{

int n, k, m;

scanf("%d",&k);

while(k--)

{

double t;

scanf("%d",&n);

t = (0.5*log(2 * n*pi) + n*log(n) - n) / log(10);

m = (int)t + 1;

printf("%d\n",m);

}

system("pause");

}

相关文章

网友评论

      本文标题:斯特林公式(对数的简便求法)1018

      本文链接:https://www.haomeiwen.com/subject/enqcsttx.html