Computerorientierte Mathematik WS 2010/2011 Prof. Dr. Thomas Gerstner Miniprojekt 4 Abgabe bis Freitag, 11.2. Sieb des Eratosthenes Das Sieb des Eratosthenes ist ein Algorithmus, der alle Primzahlen kleiner gleich einer vorgegebenen Zahl Z ausgibt. Zu Beginn werden alle Zahlen 2, 3, . . . , Z aufgeschrieben, wobei die Zahlen zunächst unmarkiert und somit potentielle Primzahlen sind. Die kleinste unmarkierte Zahl ist automatisch eine Primzahl und wird als solche markiert. Es werden nun alle Vielfachen dieser Primzahl, die kleiner gleich der Schranke Z sind, als Nichtprimzahlen markiert. Nun wird wieder die kleinste unmarkierte Zahl gesucht, als Primzahl markiert und deren Vielfache als Nichtprimzahlen. Beim Markieren der Nichtprimzahlen genügt es dabei mit dem Quadrat der Primzahl zu beginnen. Der Algorithmus endet, wenn dieses Quadrat größer als Z ist. (a) Schreibe eine Prozedur mit dem Eingabewert Z (einer Quadratzahl), die mit Hilfe des Siebes des √ Eratosthenes √ zum einen die Primzahlen kleiner gleich Z als Vektor ausgibt und zum anderen eine Z × Z-Matrix mit dem Wert 0 an der Stelle (1, 1), dem Wert 1 für eine Primzahl und an den restlichen Stellen mit der Primzahl mit deren Vielfachen diese Stelle als Nichtprimzahl markiert wurde. Für Z = 36 erhält man die folgende Matrix: 0 1 1 2 1 2 1 2 3 2 1 3 1 2 3 2 1 3 1 2 3 2 1 3 5 2 3 2 1 5 1 2 3 2 5 3 Teste deine Prozedur für Z = 100. (b) Warum genügt es beim Markieren der Nichtprimzahlen mit dem Quadrat der Primzahl zu beginnen? (c) Der Rechenaufwand des Siebes des Eratosthenes (also die Anzahl der Markierungen) ist von der Ordnung Z log(Z) O( log(log(Z)) ). Modifiziere deine Prozedur, so dass sie den Rechenaufwand bestimmt und vergleiche ihn mit der theoretischen Ordnung für Z = 4i und i = 2, 3, . . . , 9. (d) Schreibe ein LaTeX-Dokument mit Titelseite, deinem Programm aus Teilaufgabe (a) und (c), einer Dokumentation des Programmes, sowie den Ergebnissen und Grafiken aus den Aufgaben (a) bis (c). Gesamtpunktzahl: 30 Punkte