首页 >后端开发 >Python教程 >如何在 Python 中求一个数的整数平方根?

如何在 Python 中求一个数的整数平方根?

Barbara Streisand
Barbara Streisand原创
2024-10-31 13:12:47403浏览

How to Find the Integer Square Root of a Number in Python?

在 Python 中求整数平方根

Python 提供了几种计算数字平方根的方法。然而,这些方法都没有直接返回整数平方根,没有近似值或异常。

如初始代码片段中建议的,一种方法是使用 math.sqrt() 函数并将结果四舍五入到最接近的整数。然而,这种方法对于大整数可能并不精确。

更准确的方法涉及使用牛顿法,这是一种用于查找方程根的迭代技术。以下 Python 函数实现整数平方根的牛顿法:

<code class="python">def isqrt(n):
    x = n
    y = (x + 1) // 2
    while y < x:
        x = y
        y = (x + n // x) // 2
    return x</code>

此函数初始化两个变量 x 和 y,并迭代更新它们直到收敛。 x 表示整数平方根的最佳估计,而 y 是包含 x 值和 n 除以 x 的整数除法的更新估计。当 y 小于 x 时迭代停止,表明不需要进一步细化。

isqrt() 的返回值是其平方不超过 n 的最大整数。要验证结果是否为精确的整数平方根,请将结果与其自身相乘并将其与 n 进行比较。请注意,此函数在设计上处理非完美平方,不会引发任何异常。

虽然存在其他几种计算整数平方根的算法,但牛顿法通常被认为提供了准确性、速度和简单性的平衡。

以上是如何在 Python 中求一个数的整数平方根?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn