Heim > Backend-Entwicklung > Python-Tutorial > Gibt es eine narrensichere Möglichkeit zu bestimmen, ob eine Zahl ein perfektes Quadrat ist, ohne sich auf Gleitkommaberechnungen zu verlassen?

Gibt es eine narrensichere Möglichkeit zu bestimmen, ob eine Zahl ein perfektes Quadrat ist, ohne sich auf Gleitkommaberechnungen zu verlassen?

Linda Hamilton
Freigeben: 2024-11-09 01:47:02
Original
680 Leute haben es durchsucht

Is there a foolproof way to determine if a number is a perfect square without relying on floating-point computations?

So überprüfen Sie, ob eine Zahl ein perfektes Quadrat ist: Ein detaillierter Tauchgang

Einführung

Zu bestimmen, ob eine gegebene Zahl ein perfektes Quadrat ist, ist eine gängige mathematische Operation. Eine Zahl ist ein perfektes Quadrat, wenn sie als Quadrat einer ganzen Zahl dargestellt werden kann. Während Gleitkommaberechnungen mit Quadratwurzelfunktionen intuitiv erscheinen mögen, bringen sie potenzielle Ungenauigkeiten mit sich. Ganzzahlbasierte Ansätze bieten präzisere Lösungen.

Der babylonische Algorithmus

Eine ganzzahlbasierte Methode ist vom babylonischen Algorithmus zur Quadratwurzelberechnung inspiriert. Die folgende Python-Funktion, is_square(), implementiert diesen Ansatz:

def is_square(apositiveint):
    x = apositiveint // 2
    seen = set([x])
    while x * x != apositiveint:
        x = (x + (apositiveint // x)) // 2
        if x in seen: return False
        seen.add(x)
    return True
Nach dem Login kopieren

Arbeitsbeispiel

Testen wir diese Funktion:

for i in range(110, 130):
    print(i, is_square(i))
Nach dem Login kopieren

Dadurch wird der Rechtwinkligkeitsstatus jeder Zahl im angegebenen Bereich gedruckt.

Handhabung groß Ganze Zahlen

Für große ganze Zahlen bleibt diese Methode machbar, da sie vollständig mit ganzen Zahlen arbeitet und die Einschränkungen der Gleitkomma-Arithmetik vermeidet. Der folgende Code prüft beispielsweise, ob eine große ganze Zahl ein perfektes Quadrat ist:

x = 12345678987654321234567 ** 2

for i in range(x, x+2):
    print(i, is_square(i))
Nach dem Login kopieren

Beyond Floating-Point Computations

Während Gleitkommaberechnungen praktischer sind, Sie können für präzise Rechtwinkligkeitsprüfungen unzuverlässig sein. Ganzzahlbasierte Ansätze wie der babylonische Algorithmus liefern genaue Ergebnisse für jede positive Zahl, unabhängig von ihrer Größe.

Das obige ist der detaillierte Inhalt vonGibt es eine narrensichere Möglichkeit zu bestimmen, ob eine Zahl ein perfektes Quadrat ist, ohne sich auf Gleitkommaberechnungen zu verlassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage