Python での整数平方根の計算
Python には、数値の平方根を計算する方法がいくつか用意されています。ただし、これらのメソッドはどれも、近似や例外なしに整数の平方根を直接返すものではありません。
最初のコード スニペットで提案されているように、1 つのアプローチは 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>
この関数は、2 つの変数 x と y を初期化し、収束するまでそれらを繰り返し更新します。 x は整数平方根の最良の推定値を表し、y は x の値と n を x で割った整数の両方を組み込んだ更新された推定値を表します。 y が x 未満になると反復は停止します。これは、さらなる改良が不要であることを示します。
isqrt() の戻り値は、その二乗が n を超えない最大の整数です。結果が正確な整数平方根であるかどうかを確認するには、結果をそれ自体で乗算し、それを n と比較します。この関数は仕様上、完全でない平方根を処理し、例外は発生しないことに注意してください。
整数の平方根を計算するアルゴリズムは他にもいくつかありますが、一般に、ニュートン法は精度、速度、単純さのバランスが取れていると考えられています。
以上がPython で数値の整数平方根を求めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。