我写的这个函数不适用于 18 岁以下的数字

问题描述 投票:0回答:0

此代码适用于 18 及以上到十亿位的每个数字,但我使用的任何小于 18 的数字都会在我接近 1 时返回越来越多的不正确数字。我将此代码基于我编写的平方根函数。

这是对数的代码

def loginterp(start, end, iteration, base):
    #start = 2 (log of 100)
    #end = 110 (the goal is log of 110)
    #base = 10
    
    dif = end - base ** start # differental = 10
    den = start * (base ** start-1) # denominator = 20
    
    ans = (dif/den) + start
    
    if iteration > 0:
        return loginterp(ans, end, iteration - 1, base)
    else:
        return ans

def log(x, base=10):
    for i in range(1,int(x)):
        temp = base ** i
        if temp == x:
            return i
        elif temp > x and i == 1:
            return loginterp(2, x, 900, base)
        elif temp > x and i > 1:
            return loginterp((i-1), x, 900, base)

print(log(25))

它可以找到像以 2 为底的 8 的对数等于 3 的数字。所有完美的正方形和所有完美的立方体以及大多数不完美的正方形和根都有效,但如果结果小于 2,那么它会逐渐减少。

python logging calculus
© www.soinside.com 2019 - 2024. All rights reserved.