当前位置: 代码迷 >> C语言 >> [求助]请教大家.(已解决)
  详细解决方案

[求助]请教大家.(已解决)

热度:91   发布时间:2006-11-05 23:18:03.0

比如是1000!
double sum=0;
那就是for(i=1;i<=1000;i++)
{
sum+=log10(i);
}
printf("%ld\n",(long)sum+1);


----------------解决方案--------------------------------------------------------
这个是加法
sum+扩展的一种,可以把sum+=函数(i),归纳可以得到很多种的。
关键看平时的积累了。
----------------解决方案--------------------------------------------------------
[QUOTE]double sum=0;
for(i=1;i<=1000;i++)
{
sum+=log10(i);
}
printf("%ld\n",(long)sum+1);[/QUOTE]
相当简洁!
----------------解决方案--------------------------------------------------------

好方法,不需要算阶乘


----------------解决方案--------------------------------------------------------
本人数学要有待提高才行。
----------------解决方案--------------------------------------------------------

为什么啊?
可不可以从数学角度证明一下


----------------解决方案--------------------------------------------------------
[QUOTE]为什么啊?
可不可以从数学角度证明一下
[/QUOTE]

对数运算法则:

设有一函数 Y=X×(X-1);

两边取(常用)对数:

lgY=lg(X*(X-1)=lgX+lg(X-1).

----------------解决方案--------------------------------------------------------
然后呢?
----------------解决方案--------------------------------------------------------
我来说明一下.对一个数的阶乘的位数.可以用log10()来求和是这样的.

我们都知道有这样的公式log10(X*Y)=log10(X)+log10(Y).
那很显然log10(1*2*3*4...*n)=log10(1)+...log10(n)了.
再证一个数的位数=(long)log10(n)+1.
我们都知道log10()是对10取对数,即假设有一个整数n,则log10(10^x)-(long)log10(n)=1成立,(这里x表示为n的位数.)
故x=(long)log10(n)+1;(这里只限于对log10()运算取整成立.)
----------------解决方案--------------------------------------------------------
等效思想.
----------------解决方案--------------------------------------------------------
  相关解决方案