Heim > Artikel > Backend-Entwicklung > Wie können wir mithilfe von ganzen Zahlen effizient bestimmen, ob eine Zahl ein perfektes Quadrat ist?
Effizienter ganzzahlbasierter Ansatz zur Identifizierung perfekter Quadrate
Um festzustellen, ob eine Zahl ein perfektes Quadrat darstellt, kann man auf die Verwendung von verzichten Gleitkommaberechnungen wie math.sqrt(x) oder x**0.5. Diese Ansätze können zu Ungenauigkeiten führen, insbesondere bei großen ganzen Zahlen. Betrachten Sie stattdessen die ganzzahlbasierte Methode unten:
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
Dieser Algorithmus nutzt den „babylonischen Algorithmus“ zur Berechnung von Quadratwurzeln. Es berechnet iterativ den Durchschnitt von x und apositiveint//x, um sich schrittweise der Quadratwurzel von apositiveint anzunähern. Die Einbeziehung der gesehenen Menge verhindert potenzielle Endlosschleifen und stellt gleichzeitig die Konvergenz der Lösung sicher.
Um die Wirksamkeit dieser Methode zu veranschaulichen, betrachten Sie das folgende Beispiel:
for i in range(110, 130): print i, is_square(i)
Ausgabe:
110 True 111 False 112 True 113 False 114 True 115 False 116 True 117 False 118 True 119 False 120 True 121 False 122 True 123 False 124 True 125 False 126 True 127 False 128 True 129 False
Zur weiteren Demonstration können wir den Algorithmus auf substanziellere Anwendungen anwenden ganze Zahlen:
x = 12345678987654321234567 ** 2 for i in range(x, x+2): print i, is_square(i)
Ausgabe:
152415789666209426002111556165263283035677489 True 152415789666209426002111556165263283035677490 False
Obwohl Gleitkommaberechnungen praktisch sind, können sie zu Ungenauigkeiten führen, die möglicherweise nicht sofort erkennbar sind. Um präzise Ergebnisse zu erhalten, bieten ganzzahlbasierte Ansätze wie der babylonische Algorithmus eine zuverlässigere und effizientere Lösung zur Prüfung, ob eine Zahl als perfektes Quadrat gilt.
Das obige ist der detaillierte Inhalt vonWie können wir mithilfe von ganzen Zahlen effizient bestimmen, ob eine Zahl ein perfektes Quadrat ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!