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?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen