在 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中文網其他相關文章!