我的简单问题是创建一个函数来确定数字 N 是否可以写成a^n
对于某些给定的 n,即我需要检查是否N^(1/n)
是一个整数。不知何故,这个函数会产生错误的结果:
def is_power(N, n):
r = float(N) ** ( 1. / float(n) )
return r.is_integer()
For n=2
有用。
For n=3
并且 N=1,8,27 函数得出 True,这是正确的。但从那时起 False,例如为了4*4*4=64
or 5*5*5=125
。如何创建一个工作函数来查找正方形/立方体/等数字?
浮点运算并不精确——参见浮点数学有问题吗? https://stackoverflow.com/questions/588004/is-floating-point-math-broken.
因此,请使用精确整数数学来检查您的答案。圆形的r
到最接近的整数,然后查看电源是否工作。此 Python 3 代码删除了一些多余的类型转换。对于 Python 2,包装计算r
进入一个int()
类型转换(Python 3 不需要)。
def is_power(N, n):
r = round(N ** (1.0 / n))
return r**n == N
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)