06.11.2013 Aufrufe

PDF Kryptologie

PDF Kryptologie

PDF Kryptologie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Kryptologie</strong> – Eine verschlüsselte Wissenschaft 66<br />

kodiert. Null und Eins bezeichnet man deshalb als Fixpunkt (Werte, die einen Faktor<br />

nicht sauber verschlüsseln).<br />

4.12.3 Sieb des Eratosthenes<br />

Auf die Frage, wie man alle Primzahlen erzeugen kann, wusste Eratosthenes von Kyrene<br />

(* 276 v. Chr. † 194 v. Chr.) eine Antwort. Wir könnten natürlich einen Algorithmus<br />

programmieren, der nach oben wandert und dabei berechnen wir für jede Zahl die Anzahl<br />

an Teilern. Ist sie bloß 2 oder kleiner (1 und sich selbst), so ist es eine Primzahl.<br />

Doch dieses Verfahren wäre viel zu aufwändig. Eratosthenes dachte sich den umgekehrten<br />

Weg: Er nimmt an, alle natürlichen Zahlen sind Primzahlen. Er nimmt jetzt einen<br />

Teiler her und streicht alle Zahlen, die jenen Teiler haben. Dadurch wird eine enorme<br />

Geschwindigkeitssteigerung erzielt.<br />

def s i e v e o f e r a t o s t h e n e s ( l i m i t ) :<br />

s i e v e = [ False , False ] + [ True ] ∗ ( l i m i t − 2)<br />

r e s u l t = 0<br />

next = 2<br />

l i m i t 2 = s q r t ( l i m i t )<br />

while next < l i m i t 2 :<br />

for i in xrange ( next ∗2 , l i m i t , next ) :<br />

s i e v e [ i ] = False<br />

next += 1<br />

return s i e v e<br />

Lassen wir diese python-Implementierung bis 100 laufen, erhalten wir eine Liste mit 100<br />

Zahlen. Jeder Zahl ist ein boolscher Wert angehängt, ob die Zahl eine Primzahl ist.<br />

Wieso läuft das Sieb des Eratosthenes bis √ n?<br />

Die letzte (größte) Zahl – die überprüft werden muss – ist n. n entsteht durch die<br />

Multiplikation von √ n·√n.<br />

( √ n + 1)·√n<br />

ist eine Zahl über n und ( √ n − 1)·√n<br />

ist unter<br />

n. Das bedeutet, wenn innerhalb des Bereichs um 10 bleiben wollen, müssen wir den<br />

einen Faktor anheben und den anderen erniedern. Da das Kommutativgesetz für ganze<br />

Zahlen gilt, spielt es keine Rolle, welcher Zahl wir welche Rolle zuordnen.<br />

100 ≈ 10·10, 9·11, 8·12, 7·14, 6·16, 5·20, 4·25, 3·33, 2·50, 1·100<br />

Und aufgrund dieser Reihe gilt, dass alle großeren Faktoren (beispielweise 16 von 6·16)<br />

bereits durch den anderen Faktor abgedeckt sind (6). Es werden keine Zahlen nach 10<br />

mehr auftreten, die neue Faktoren zudeckt. Beispielweise 11 deckt 22, 33, 44, 55, 66, 77,<br />

88 und 99 zu. Dazu benötigt es aber die Faktoren 2, 3, 4, 5, 6, 7, 8 und 9, deren Vielfachen<br />

aber bereits zugedeckt wurden. 11·11 wäre der erste Faktor, den 11 neu zudecken würde,<br />

aber der ist größer als 10·10 = 100.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!