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
Linda HamiltonOriginal
2024-11-09 01:47:02711Durchsuche

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

Arbeitsbeispiel

Testen wir diese Funktion:

for i in range(110, 130):
    print(i, is_square(i))

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

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!

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