Avatar ·

Wie schnell feststellen, ob die Quadratwurzel einer ganzen Zahl in Java eine ganze Zahl ist?

Hallo zusammen! Ich bin ein Java-Anfänger und stehe vor einer Aufgabe: Ich muss prüfen, ob die Quadratwurzel einer ganzen Zahl eine ganze Zahl ist (d.h. ein perfektes Quadrat). Zum Beispiel für 16 ist die Antwort true (4), für 20 — false. Ich habe eine einfache Methode mit einer Schleife geschrieben, aber sie arbeitet langsam für große Zahlen (z.B. 10^12). Ich habe Math.sqrt() versucht, aber ich habe Angst vor Rundungsfehlern bei double. Hier ist mein aktueller Code: ```java public static boolean isPerfectSquare(int n) { if (n < 0) return false; for (int i = 0; i * i <= n; i++) { if (i * i == n) return true; } return false; } ``` Er funktioniert, aber bei n = 2_147_483_647 (maximaler int) führt die Schleife ~46340 Iterationen aus, was langsam ist. Ich habe gehört, dass man binäre Suche oder Tricks mit Gleitkommazahlen verwenden kann. Aber wie mache ich das?