Files
freeCodeCamp/curriculum/challenges/german/10-coding-interview-prep/project-euler/problem-255-rounded-square-roots.md
2023-01-23 10:14:46 -06:00

2.2 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f46d1000cf542c50ff7f Problem 255: Gerundete Quadratwurzeln 1 301903 problem-255-rounded-square-roots

--description--

Wir definieren die gerundete Quadratwurzel einer positiven ganzen Zahl n als die Quadratwurzel von n, gerundet auf die nächste ganze Zahl.

Die folgende Prozedur (im Wesentlichen die Methode von Heron, angepasst an die ganzzahlige Arithmetik) findet die gerundete Quadratwurzel von n:

Lasse d die Anzahl der Ziffern der Zahl n sein.

Falls d ungerade ist, setze $x_0 = 2 × {10}^{\frac{d - 1}{2}}}$.

Falls d gerade ist, setze $x_0 = 7 × {10}^{d - 2}{2}}$.

Wiederhole:

x_{k + 1} = \left\lfloor\frac{x_k + \left\lceil\frac{n}{x_k}\right\rceil}{2}\right\rfloor

bis x_{k + 1} = x_k.

Als Beispiel wollen wir die gerundete Quadratwurzel von n = 4321 finden.

n hat 4 Ziffern, also $x_0 = 7 × {10}^{frac{4-2}{2}}} = 70$.

$$x_1 = \left\lfloor\frac{70 + \left\lceil\frac{4321}{70}\right\rceil}{2}\right\rfloor = 66 \\ x_2 = \left\lfloor\frac{66 + \left\lceil\frac{4321}{66}\right\rceil}{2}\right\rfloor = 66$$

Da x_2 = x_1 ist, hören wir hier auf. Nach nur zwei Iterationen haben wir also festgestellt, dass die gerundete Quadratwurzel von 4321 66 ist (die tatsächliche Quadratwurzel ist 65,7343137...).

Die Anzahl der erforderlichen Iterationen ist bei dieser Methode erstaunlich gering. Zum Beispiel können wir die gerundete Quadratwurzel einer 5-stelligen ganzen Zahl (10\\.000 ≤ n ≤ 99\\.999) mit durchschnittlich 3,2102888889 Iterationen finden (der Durchschnittswert wurde auf 10 Dezimalstellen gerundet).

Wie viele Iterationen sind durchschnittlich erforderlich, um mit dem oben beschriebenen Verfahren die gerundete Quadratwurzel einer 14-stelligen Zahl ({10}^{13} ≤ n < {10}^{14}) zu finden? Gib deine Antwort auf 10 Dezimalstellen gerundet an.

Hinweis: Die Symbole ⌊x⌋ und ⌈x⌉ stehen für die Aufrundungs-und Abrundungsfunktion.

--hints--

roundedSquareRoots() sollte 4.447401118 zurückgeben.

assert.strictEqual(roundedSquareRoots(), 4.447401118);

--seed--

--seed-contents--

function roundedSquareRoots() {

  return true;
}

roundedSquareRoots();

--solutions--

// solution required