Heim  >  Artikel  >  Backend-Entwicklung  >  So finden Sie ganzzahlige Quadratwurzeln in Python: Welche Methode ist die beste?

So finden Sie ganzzahlige Quadratwurzeln in Python: Welche Methode ist die beste?

DDD
DDDOriginal
2024-10-28 06:03:32601Durchsuche

How to Find Integer Square Roots in Python: Which Method is Best?

Berechnen ganzzahliger Quadratwurzeln in Python

In Python kann das Finden einer exakten ganzzahligen Quadratwurzel eine Herausforderung sein. Für diese Aufgabe stehen jedoch mehrere Methoden zur Verfügung.

Ein einfacher Ansatz ist die Verwendung der Newton-Methode, die ihre Schätzung der Quadratwurzel iterativ verfeinert:

<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>

Diese Methode berechnet genau größte ganzzahlige Quadratwurzel, die dann durch Multiplikation mit sich selbst überprüft werden kann, um zu überprüfen, ob sie mit der Eingabezahl übereinstimmt.

Eine alternative Methode besteht darin, eine ganzzahlige Division zu verwenden, um iterativ nach perfekten Quadraten zu suchen:

<code class="python">def isqrt2(n):
    i = 1
    while i * i <= n:
        i += 1
    return i - 1</code>

Diese Methode hat eine einfachere Struktur, ist aber im Allgemeinen langsamer als Newtons Methode für große ganze Zahlen.

Schließlich bietet das Mathematikmodul für Python-Versionen 3.8 und höher eine integrierte isqrt-Funktion, die die genaue berechnet Ganzzahlige Quadratwurzeln effizient ermitteln.

<code class="python">from math import isqrt

x = isqrt(49)  # returns 7</code>

Durch Auswahl der geeigneten Methode basierend auf der gewünschten Effizienz und Python-Version können Sie ganzzahlige Quadratwurzeln in verschiedenen Szenarien genau ermitteln.

Das obige ist der detaillierte Inhalt vonSo finden Sie ganzzahlige Quadratwurzeln in Python: Welche Methode ist die beste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn