吉林市招工信息:1+(1/2)+(1/3)+(1/4)+...+(1/100)=?

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 08:56:48
求简便方法!
要的是简便的数学方法!

s=5.1873775176396203
ln(100)=4.6051701859
它们的差0.5822是一个常数,n越大越精确。
即1+(1/2)+……+(1/n)=ln(n)+c
c=0.5822
绝对没问题,c被称为欧拉常数。baidu一下就知道了。如果你没有大学知识,着个题可以说没有简单方法。

main(){
int n,i;
n=0;
for(i=1;i<=100;i++){
n+=1/i;
}
printf("%d",n);
}

通项公式y=1/x
用定积分:
s(100)=∑1/x=∫(上100下1)1/xdx=4.6051701859
这个答案不对,因为积分是无限微分再积分.而现在只要求其中的100项.所以只有一项一项相加
s(100)=5.1873775176396203
可以编一个c的小程序如下:
#include<stdio.h>
main()
{
double n=0,t,i=1;
while(i<=100)
{t=1/i;n+=t;i+=1;}
printf("\n%18.17f",n);
}

从公式可以看出,第一项为1/1,第二项为1/2,第三项为1/3,…,第n项为1/n。也就是说,分母每次增加1,而分子始终为1。这个问题可以通过多种循环来解决,这里给出用Do循环和For循环编写的两个过程:
Function SumD(n As Integer) As Single
s=1
i=1
Do
i=i+1
s=s+1/i
Loop Until i >= n
SumD = s
End Function

Function SumF(n As Integer) As Single
s=1
For i = 2 To n
s=s+1/i
Next i
SumF = s
End Function
上述两个过程都可以求出前n项之和。其SumD过程用Do循环实现,而SumF用For循环实现。注意,在用For循环实现时,循环初值不能从1开始,必须从2开始。
可以在下面的事件过程中试验上述过程的操作,求前100项之和:
Private Sub Form_Click()
sum1 = SumD(100)
sum2 = SumF(100)
Print
Print "sum1="; sum1
Print "sum2="; sum2
End Sub
运行程序,单击窗体,结果:
sum1=5.187377
sum2=5.187377

通分分母都是100
分子相加100+99+98+97+……+1
用高斯定理
(100+1)+(99+2)+(98+3)……=101*50=5050
5050/100=101/2
对吗?

人家要的是方法,不是答案

好像只有用积分算吧