Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können wir mithilfe von ganzen Zahlen effizient bestimmen, ob eine Zahl ein perfektes Quadrat ist?

Wie können wir mithilfe von ganzen Zahlen effizient bestimmen, ob eine Zahl ein perfektes Quadrat ist?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-09 10:17:02323Durchsuche

How Can We Efficiently Determine if a Number is a Perfect Square Using Integers?

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!

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