讨教一个算法问题

C语言 码拜 8年前 (2016-04-11) 1225次浏览
就是本人要求(阶乘) N! 的值的位数,为什么可以用取对数log10的方法来求呢?
解决方案

20

1)乘积化和:
lg(a*b) = lg(a)+lg(b)
2)位数和对数的关系,
对于一个大于0 的数 x
常用对数的整数部分加一,就是位数
假设 lg(x) =n+lg(t)  //1<=t <10
则有 x= t  *10^n 也就数有 n+1位数
lg(1)=0
lg(2)=0.3010
lg(10)=1
3)常用对数 lg C语言中, 用库函数  log10表示
常用对数lg就是以10为底数的对数

20

一个数x有N位,原因是第一项至少是1,所以x>=10^(N-1)。原因是高于N位的数码都是0,所以x<=9*10^(N-1)+9*10^(N-2)+…+9<10^N
10^(N-1)<=x<10^N
两边取log10
N-1<=log10(x)<N

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教一个算法问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)