阶乘的精确值(大数)
发布时间:2021-01-31 13:14:31 所属栏目:大数据 来源:网络整理
导读:首先确定阶乘的位数。 我们知道整数n的位数的计算方法为:log10(n)+1 故n!的位数为log10(n!)+1 ? 如果要求出n!的具体值,对很大的n(例如n=1000000)来说,计算会很慢,如果仅仅是求阶乘的位数,可以用斯特林(Stirling)公式求解 ? 斯特林(Stirling)公式:
首先确定阶乘的位数。 我们知道整数n的位数的计算方法为:log10(n)+1 故n!的位数为log10(n!)+1 ? 如果要求出n!的具体值,对很大的n(例如n=1000000)来说,计算会很慢,如果仅仅是求阶乘的位数,可以用斯特林(Stirling)公式求解
于是求n!的位数就是求log10((2*PI*n)^1/2*(n/e)^n)+1 即 1/2*log10(2*PI*n)+n*log10(n/e)+1 ? 所以采用下面代码计算阶乘位数,会非常快#include <math.h> #define PI 3.141592654 #define E 2.71828182846 int l(int n) { int s=1; if(n>3) s=log10(2*PI*n)/2+n*log10(n/E)+1; return s; }以上转载至http://www.cnblogs.com/stonehat/p/3603267.html (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |