标签:一个数阶乘的位数
求一个数阶乘的位数
flyfish 2015-8-15
例如 7!=5040 ,7的阶乘结果是4位数(10进制)
求一个数的位数
1 循环方法
int get_digit_loop(int N)
{
int digit = 0;
do
{
digit ++;
} while ((N /= 10) > 0);
return digit;
}
2 递归方式
int get_digit_recursion(int N)
{
int digit = 0;
digit = N < 10 ? 1 : 1 + get_digit_recursion(N/10);
return digit;
}
3 math头文件自带的库函数
int get_digit_lib(int N)
{
int digit = (floor) (log10(N)) + 1;
return digit;
}
求一个数阶乘的位数
可以直接采用log10求一个数阶乘的位数
N=n!
方法1
log10N表示以10为底,N的对数。缩写是lgN.
natural logarithm 自然对数
natural 英 [‘n?t?(?)r(?)l] 美 [‘n?t?r?l]
logarithm 英 [‘l?g?r?e(?)m; -r?θ-] 美 [‘l?ɡ?r?e?m]
方法2
利用斯特林公式
斯特灵公式
Stirling’s approximation
Stirling’s formula
Stirling 英 [‘st?:li?]
approximation 英 [?,pr?ks?’me??n] 美 [?’prɑks?’me??n][数] 近似法;接近;[数] 近似值
formula 英 [‘f??mj?l?] 美 [‘f?rmj?l?][数] 公式,准则;配方;婴儿食
e 是(mathematical constant)数学常数
e
以e为底的对数叫自然对数(Natural logarithm)
pi也是mathematical constant
Pi
the ratio of a circle’s circumference to its diameter
圆的周长与直径的比值
int digit_stirling(int n)
{
double PI=acos(double(-1));// PI的值=反余弦函数 -1.0为Pi, 1为0。
double e=exp(double(1));//e的值
return floor(log10(sqrt(2*PI*n))+n*log10(n/e))+1;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:一个数阶乘的位数
原文地址:http://blog.csdn.net/flyfish1986/article/details/47687645