我想计算floor(log(n,b))
的值,其中n
和b
都是整数。直接实现这个函数会在稍大一点的n
和b
值时失败。
# direct implementation
def floor_log(n,b):
return math.floor(math.log(n,b))
例如,floor_log(100**3, 100)
的计算结果为 2
,而不是正确的值 3
。我已经编写了一个工作函数,它重复地除以直到没有余数。
# loop based implementation
def floor_log(n,b):
val = 0
n = n // b
while n > 0:
val += 1
n = n // b
return val
有没有更快或更优雅的方法获得这个解决方案?也许使用内置功能?