斯特林公式

2021-08-15 09:11:47 字數 1471 閱讀 7990

斯特林公式是一條用來取n階乘近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特靈公式十分好用。

斯特林公式可以用來估算某數的大小,結合lg可以估算某數的位數,或者可以估算某數的階乘是另乙個數的倍數。

stirling公式的意義在於:當n足夠大時,n!計算起來十分困難,雖然有很多關於n!的等式,但並不能很好地對階乘結果進行估計,尤其是n很大之後,誤差將會非常大。但利用stirling公式可以將階乘轉化成冪函式,使得階乘的結果得以更好的估計。而且n越大,估計得越準確。階乘的

近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特林公式十分好用,而且,即使在n很小的時候,斯特林公式的取值已經十分準確。求n!的位數:

lnn!=nlnn-n+0.5*ln(2*n*pi)  !

要想求有多少位,將他換成以10為底便可。

利用換底公式得  lnn!/ln10=log10n!

把式子取整形加1就是位數!

第乙個題,求階乘的最高位。

不用說,肯定是用斯特林公式,不過要注意前面1~9還是自己打個表吧,很簡單的。

**:

#include#include#include#define e  2.71828182845

#define pi 3.1415926

int main()

if ( a <= 1 )

if ( a == 2 )

if ( a ==3 )

if ( a == 7 )

if ( a == 8 )

}}

第二題:判斷階乘的位數。

**:

#include#include#include#includeconst double e = 2.71828182845;

const double pi = 3.1415926;

int main(void)

a = v;

s = log10_2_pi + (a+0.5)*log10(a) - a * log10_e;

f = ceil(s);

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

} }return 0;

}

第三題、求乙個數的n次方8進製時的位數,換底公式!!!

**:

#include#include#include#include#include#include#include#include#include#define maxn 100010

using namespace std;

typedef long long ll;

#define e 2.71828182845

#define pi 3.1415926

int main()

printf("%lld\n",ans);

}return 0;

}

斯特林公式

斯特林公式的常見表示形式 顯而易見,這個公式主要是用來求近似的階乘的值的,在競賽中往往只採用第乙個形式,其精確度已經足夠用來求階乘位數了.lg n lg 2 n 2 n lg n lg e 這個公式就是圖中第乙個式子左右同時求對數得到的.不難發現,10x,10 x 1 之間囊括了所有長度為x 1的數...

斯特林公式

夫夫有一天對乙個數有多少位數感興趣,但是他又不想跟凡夫俗子一樣,所以他想知道給乙個整數n,求n!的在8進製下的位數是多少位。第一行是乙個整數t 0示例1 3425 2 13 include using namespace std const long double pi 3.141592653589...

斯特林公式應用

51nod1058 這題讓求n的階乘長度,n範圍到1e6,很明顯會爆long long,那麼就需要乙個公式直接算出結果 斯特林公式,這個公式的作用就是求n階乘的近似值。我們知道求乙個十進位制數x的位數,log10 x 1,用斯特林公式帶入x,兩邊取對數 可以看出斯特林公式的作用,上式左邊n!會爆,而...