阶乘有关模板

1.求阶乘后的位数

原理

斯特林公式 ——Stirling公式(取N阶乘近似值)

于是求n!的位数就是求log10((2 * PI*n) ^ 1 / 2 * (n / e) ^ n) + 1

即 1 / 2 * log10(2 * PI*n) + n * log10(n / e) + 1

代码

const double PI = 3.141592654;
const double E = 2.71828182846;
int fact_len(int n)
{
    int s = 1;
    if (n > 3)
        s = log10(2 * PI*n) / 2 + n * log10(n / E) + 1;
    return s;
}

 

posted @ 2018-10-20 14:38  0x3A2B  阅读(135)  评论(0)    收藏  举报