Verschlüsselung

Aus ProgrammingWiki
Archivierte Version vom 2011-01-26T07:17:18+00:00. Aktuelle Version

Inhaltsverzeichnis

InfWolfS_Verschlüsselung.gif

Einführung

Für die moderne Verschlüsselungstechnik sind Primzahlen überaus bedeutsam; z.B. für den RSA-Code oder Hybrid-Codes.
Die Potenzierung von Primzahlen kann als Einwegfunktion genutzt werden. Warum dies möglich ist, soll ein einfacher Versuch mit einem Algorithmus zur Primzahlermittlung verdeutlichen.

Ermittlung von Primzahlen

InfWolfS_Eratosthenes.png

Der griechische Mathematiker, Geograph, Philosoph, Philologe und Dichter Eratosthenes von Kyrene (zwischen ca. 275 bis ca. 195 v. Chr.) war der erste Gelehrte der Antike, der durch eine Messung den Umfang der Erde mit erstaunlicher Genauigkeit bestimmt hat.
Auf ihn geht aber auch ein einfacher Algorithmus zur Ermittlung "aller" Primzahlen zurück, das sogenannte Das Sieb des Eratosthenes. Warum "man" doch nicht alle so einfach "aussieben" kann, sollen Sie empirisch zeigen.

InfWolfS_Eratos_map.jpg


Algorithmus nach Eratosthenes

  • Notiere die natürlichen Zahlen, beginne mit 2.
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
  • Unterstreiche die 2 und streiche alle Vielfachen von 2.
\usepackage{ulem} \uline{2}, 3, \xout{4}, 5, \xout{6}, 7, \xout{8}, 9, \xout{10}, 11, \xout{12}, 13, \xout{14}, 15, \xout{16}, 17, \xout{18}, 19, \xout{20}, ...
  • Unterstreiche die erste freie Zahl (in diesem Falle die Zahl 3) und streiche deren Vielfachen.
\usepackage{ulem} \uline{2}, \uline{3}, \xout{4}, 5, \xout{6}, 7, \xout{8}, \xout{9}, \xout{10}, 11, \xout{12}, 13, \xout{14}, \xout{15}, \xout{16}, 17, \xout{18}, 19, \xout{20}, ...
  • Verfahre mit allen weiteren Zahlen ebenso.
\usepackage{ulem} \uline{2}, \uline{3}, \xout{4}, \uline{5}, \xout{6}, \uline{7}, \xout{8}, \xout{9}, \xout{10}, \uline{11}, \xout{12}, \uline{13}, \xout{14}, \xout{15}, \xout{16}, \uline{17}, \xout{18}, \uline{19}, \xout{20}, ...
  • Alle unterstrichenen Zahlen sind Primzahlen.

Hinweis zur Lösung

  • Belege ein eindimensionales Feld (Array) mit n ganzen Zahlen. Beginne mit der 2.
  • Setze die Vielfachen jedes der von Null verschiedenen Feldelemente auf Null. Beginne ebenfalls bei 2.
  • Gib nur die Feldelemente aus, die von Null verschieden sind.


Implementation


Aufgaben

  1. Implementieren Sie die Befehle für das "Aussieben" der Primzahlen.
  2. Testen Sie mit dem fertigen Programm die benötigte Laufzeit. Verändern Sie dazu die Grenzwerte in geeigneten Schritten bis zu 3000000.
  3. Tragen Sie die Zeiten in einem Diagramm ein.
  4. Stellen Sie eine Vermutung zum weiteren Kurvenverlauf an.