Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man genau bestimmen, ob eine Zahl ein perfektes Quadrat ist?

Wie kann man genau bestimmen, ob eine Zahl ein perfektes Quadrat ist?

Barbara Streisand
Barbara StreisandOriginal
2024-11-08 19:54:021046Durchsuche

How to Accurately Determine if a Number is a Perfect Square?

Perfekte Quadrate finden: Eine umfassende Methode

Die Bestimmung, ob eine Zahl ein perfektes Quadrat ist, mag einfach erscheinen, aber sich auf Gleitkommaoperationen zu verlassen, kann unzuverlässig sein. Für die Genauigkeit ist es entscheidend, ganzzahlige Ansätze wie den unten dargestellten zu verwenden.

Der Algorithmus nutzt die babylonische Methode der Quadratwurzelberechnung. Es schätzt die Quadratwurzel iterativ, indem es den Durchschnitt der aktuellen Schätzung und der Zahl dividiert durch diese Schätzung berechnet.

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

Diese Methode konvergiert nachweislich für jede positive ganze Zahl und wird angehalten, wenn die Zahl nicht perfekt ist Quadrat, da die Schleife auf unbestimmte Zeit andauern würde.

Hier ist ein Beispiel:

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

Ausgabe:

110 False
111 False
112 False
113 False
114 False
115 False
116 False
117 False
118 False
119 False
120 True
121 True
122 False
123 False
124 False
125 True
126 False
127 False
128 False
129 True

Wie oben gesehen, identifiziert der Algorithmus korrekt perfekte Quadrate, B. 120 und 125, wobei nicht perfekte Quadrate wie 111 und 122 ausgeschlossen werden.

Bei großen ganzen Zahlen können Gleitkomma-Ungenauigkeiten erheblich werden und möglicherweise zu fehlerhaften Ergebnissen führen. Um Präzision zu gewährleisten, ist es ratsam, für diese Aufgabe keine Gleitkommaoperationen zu verwenden.

Das obige ist der detaillierte Inhalt vonWie kann man genau 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