7
Ich habe diesen Code-Schnipsel gesagt entspricht (int)sqrt(n)
seltsame Art und Weise Quadratwurzel der Berechnung
int s(int n) {
for (int i = 1, k = 0; n > 0; i += 2) {
if (k + i > n)
return i/2;
k += i;
}
return 0;
}
Und es zu funktionieren scheint, aber ich verstehe nicht, wie es funktioniert?
Ich stimme für das Schließen dieser Frage als Off-Topic, weil dies eine mathematische Frage ist, keine Programmierfrage. Versuchen Sie math.stackexchange.com. – Barmar
Hinweis: Code schlägt bei 'n' in der Nähe von' INT_MAX' zu groß aus. IAC, für große Zahlen dauert es sehr lange. Schnellere Methoden existieren. – chux
Wenn Sie das seltsam finden, sollten Sie die höchst bizarren Algorithmen in wissenschaftlichen Taschenrechnern sehen. Selbst nachdem sie stundenlang studiert haben, gibt es keinen Schimmer, wie sie tun, was sie tun! – wallyk