分数形式的谐波系列

时间:2013-01-09 14:20:17

标签: python math

有没有人知道如何在python中编写Harmonic Series

H(n) = 1 + 1/2 + 1/3 + ... + 1/n

注意:我们不允许从预定义模块导入。输出必须是分数形式(最低项)的答案的分子和分母。

哦,我很抱歉。我只是一个初学者。我很抱歉。所以这是我的谐波系列的代码。

n = input("Enter n:")  

def harmonic(n):  
    a=1  
    b=1  
    for d in range(2, n+1):  
            a = a*d+b  
            b = b*d  
            return (a,b)  
            x == max(a,b)%min(a, b)  
            if x == 0:  
                y=min(a,b)  
                return y  
            else:  
                y=min(a,b)/x  
                return y  
            a=a/y  
            b=b/y  
            return (a,b)  
print harmonic(n)  

出了什么问题?无论我输入什么,输出总是(3,2)..什么错了? :(请帮助..谢谢:)

1 个答案:

答案 0 :(得分:3)

没有模块,你需要做的就是自己实现分数加法。此外,要以最低的条件得到结果,您需要实现/获得gcd函数。

执行a/b + c/d时,结果(未规范化)为(ad+bc)/bd。在谐波系列中,注意其中一个分子(在这种情况下为c)每次为1,因此结果为(ad+b)/bd

因此,调用a当前分子,b当前分母,d系列中的下一个分母。伪代码将类似于以下内容。 n是输入整数。

  1. a←1 {将从1/1}
  2. 开始
  3. b←1
  4. 对于[2 .. d] {从n1/2的所有1/n,请执行以下操作}
    1. aa*d + b
    2. bb*d
    3. xgcd(a,b) {Normalization starts here}
    4. aa/x
    5. bb/x
  5. 输出(ab