Heim > Backend-Entwicklung > Python-Tutorial > 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
Freigeben: 2024-11-09 10:17:02
Original
387 Leute haben es durchsucht

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

Ausgabe:

152415789666209426002111556165263283035677489 True
152415789666209426002111556165263283035677490 False
Nach dem Login kopieren

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!

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