import matplotlib.pyplot as plt
import numpy as np

def d(n) :
    r = 0
    for k in range(1,n+1) :
        if n%k == 0 :
            r += 1
    return r
    
def D(n) :
    s = 0
    for k in range(1,n+1) :
        s += d(k)
    return s
    
def H(n) :
    s = 0
    for k in range(1,n+1) :
        s += 1/k
    return s
    
# N = [k for k in range(2,101)]
# Y = [D(k)/(k*np.log(k)) for k in N]
# plt.plot(N,Y)
# plt.show()

def f(x,n) :
    s = 0
    for k in range(1,n+1) :
        s += x**k/(1-x**k)
    return s
    
def DL(x,n) :
    s = 0
    for k in range(1,n+1) :
        s += d(k)*x**k
    return s
    
X = np.arange(-1,1,0.01)
Y = [f(x,10) for x in X]
Z = [DL(x,10) for x in X]
plt.plot(X,Y)
plt.plot(X,Z)
plt.show()