Ich habe diese Funktion geschrieben, um die Anzahl der Quadratwurzeln zwischen zwei Zahlen (inklusive) zu finden.Finden Sie die Anzahl der Quadratwurzeln zwischen zwei Zahlen
static int FindRoot(int no1, int no2) {
int res = 0;
for (int x = no1; x <= no2; x++) {
for (int y = 1; y <= no2; y++) {
if (y * y == x)
res++;
}
}
return res;
}
Das wird gut funktionieren, aber ich habe über seine Leistung nachgedacht. Da in diesem Fall die inner For loop
von Startposition (1) ausgeführt wird, so wird es Zeit brauchen, wenn jemand einen großen Nummernkreis an die Methode übergibt.
Also, meine Frage ist:
Gibt es eine andere Art, wie ich dies mit einer besseren Leistung finden kann?
PS- ich nicht Math.sqrt()
Funktion
Ihre Funktion funktioniert nur für perfekte Quadratwurzeln? –
Sie könnten die Regeln umgehen und [Newtons Methode] (https://en.wikipedia.org/wiki/Newton%27s_method#Square_root_of_a_number) für die Berechnung der Quadratwurzel implementieren ... aber das ist wahrscheinlich nicht das, was Sie wollen: P – SamYonnou
Ich hoffe es funktioniert in wenigen Fällen, die ich getestet habe. Gibt es ein Problem, dann hilf mir es herauszufinden. – Trying