在 Python 中,是
n**0.5 # or
math.sqrt(n)
当一个数是完全平方数时被识别?具体来说,我应该担心当我使用
int(n**0.5) # instead of
int(n**0.5 + 0.000000001)
由于精度误差,我可能会意外地得到比实际平方根小一的数字?
由于几个答案建议了整数算术,我会推荐gmpy2 https://code.google.com/p/gmpy/图书馆。它提供了检查数字是否为完美幂、计算整数平方根和带余数的整数平方根的函数。
>>> import gmpy2
>>> gmpy2.is_power(9)
True
>>> gmpy2.is_power(10)
False
>>> gmpy2.isqrt(10)
mpz(3)
>>> gmpy2.isqrt_rem(10)
(mpz(3), mpz(1))
免责声明:我维护 gmpy2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)