Aufgaben 4.1.
Aufgabe 1 ("Quadratwurzel")
Zu erstellen ist eine Methode quadratwurzelBerechnen, die die Quadratwurzel einer Zahl näherungsweise berechnet.Dabei sollen die gesuchte Zahl und die Genauigkeit, mit der die Wurzel berechnet werden soll (z.B. 0.00000001), als Parameter eingegeben werden.
Als Grundlage der Berechnung soll das Prinzip der Intervallschachtelung benutzt werden:
Die Intervallschachtelung startet mit einem Intervall, welches so groß gewählt werden muss, dass sich das Ergebnis in diesem Intervall befindet. (Für Zahlen größer 1 bieten sich 1 als Untergrenze und die Zahl selbst als Obergrenze an.) Dann teilt man dieses Intervall in der Mitte in zwei Teilintervalle und überlegt sich, in welchem der beiden Teilintervalle das Ergebnis liegen muss. Dann fährt man mit diesem Teilintervall fort und teilt es erneut. Dies wiederholt man nun solange, bis die Obergrenze und die Untergrenze des Intervalls nahe genug beieinander liegen (d.h. die gewünschte Genauigkeit des Ergebnisses erreicht ist). Die Mitte dieses letzten Intervalls gibt man dann als Ergebnis aus.
Um auch die Wurzel von Zahlen < 1 berechnen zu können wählt man 0 als Untergrenze und 1 als Obergrenze. Die Methode muss für diesen Sonderfall erweitert werden.
Es bietet sich nun noch an, das Ergebnis mit der Berechnung über die entsprechende Methode aus dem Package java.lang.Math zu vergleichen.
Aufgabe 2 ("Primfaktorzerlegung")
Für viele Zwecke in der Mathematik oder der Kryptographie ist es notwendig Zahlen in ihre Primfaktoren zu zerlegen. Dazu bietet sich folgendes Verfahren an:
In einer Zählschleife wird wiederholt von 2 (kleinster Primfaktor) bis n (Zahl) gezählt, wobei bei jedem Durchlauf überprüft wird, ob die Zählvariable ganzzahliger Teiler der Zahl ist (Modulofunktion: %). Ist dies der Fall, ist ein neuer Primfaktor gefunden und wird als Teil des Produkts der Primzahlen auf der Konsole ausgegeben. Die ganze Schleife wird daraufhin "zurückgesetzt", indem n durch n/Primfaktor ersetzt wird und der Zähler erneut bei 2 beginnt. (Die Zählvariable muss dabei auf 1 (!) gesetzt werden, da am Ende der Schleife diese ja um 1 erhöht wird.). Hinweis: Um eine formal saubere Ausgabe zu erhalten, muss der Faktor 1 als Teil des Produkts verwendet werden.
Erstelle eine Methode primfaktorZerlegung, die nach Übergabe einer Zahl die Zerlegung in ihre Primfaktoren anzeigt.
Aufgabe 3 ("Matrix 2")
Die Aufgabe 3.4.4. soll so umgestaltet werden, dass die Größe der Matrix und das ausgegebene Zeichen als Parameter der Methode übergeben werden. Wir verwenden dabei für das Zeichen den Datentyp char. Zeichen vom Typ char werden mit einfachen Anführungszeichen eingegeben (z.B. 'x').
Aufgabe 4 ("Collatz-Vermutung")
Die Collatz-Vermutung (auch bekannt als 3n+1-Vermutung) ist eine mathematisches Problem, für das bis heute kein Beweis gefunden werden konnte. Es handelt sich um eine Zahlenreihe, für die folgende Bildungsregel gilt:
Ist die aktuelle Zahl gerade, wird sie durch 2 geteilt, ist sie ungerade, wird sie mit 3 multipliziert und anschließend 1 hinzugezählt.
Die Vermutung lautet, dass bei jeder beliebigen Zahl, diese Reihe schließlich bei 1 endet bzw. in der Wiederholung der Folge 1 - 4 - 2 - 1. Es wurde bisher kein Gegenbeispiel gefunden, aber mathematisch bewiesen werden konnte die Vermutung noch nicht. Erstelle nun eine Methode collatz(int n), die für eine Zahl n ausgibt, in wievielen Schritten die Reihe bei 1 endet.
Erweiterung: Es soll ermittelt werden, bei welcher Zahl innerhalb eines Bereichs von 0 bis n diese Reihe am längsten ist.