1×1/2+2×1/3+3×1/4+…199×1/200= 简便算法

如题所述

第1个回答  2007-05-18
其实这道题就是两个两个求嘛。先求1*1/2+2*1/3,算出是5/6,再把
5/6+3*1/4=5/6+3/4=(5*4+3*6)/(4*6),然后约分,再加下一个,以此类推。
其实约分可用欧几里德的辗转相除法求最大公约数。。
//求a,b的最大公约数,这个时间复杂度是O(logn)的。
function gcd(a,b):longint;
begin
if a mod b=0 then gcd:=b
else gcd:=gcd(b,a mod b)
end;
第2个回答  2007-05-18
下面可以少一些乘法:
(1-1/2)+(1-1/3)+(1-1/4)+……+(1-1/200)=199-(1/2+1/3+1/4+……1/200)本回答被提问者采纳
第3个回答  2007-05-18
#include<stdio.h>
#include<math.h>
void main()
{
float sum=0;
for(int 1=1;i<200;i++)
sum+=i/(i+1.0);
printf("/n%f",sum);
printf("/n");
}
相似回答