Fab*_*hn. 3 python algorithm math function division
我的一个简单问题是创建一个函数来确定是否可以a^n为某些给定的n 写入数字N ,即我需要检查是否N^(1/n)是整数.不知何故,此函数产生错误的结果:
def is_power(N, n):
r = float(N) ** ( 1. / float(n) )
return r.is_integer()
Run Code Online (Sandbox Code Playgroud)
因为n=2它有效.
对于n=3和N = 1,8,27,函数产生True,这是正确的.但是从那时起就是假的,例如为4*4*4=64或5*5*5=125.如何创建一个找到正方形/立方体/等数字的工作函数?
浮点运算不精确 - 请参阅浮点数学是否已损坏?.
因此,请使用精确整数数学检查您的答案.舍r入到最接近的整数然后查看电源是否有效.这个Python 3代码删除了一些冗余类型转换.对于Python 2,将计算包装r到int()类型转换中(Python 3不需要).
def is_power(N, n):
r = round(N ** (1.0 / n))
return r**n == N
Run Code Online (Sandbox Code Playgroud)