Die Primfaktorzerlegung

Gliederung:

Grundlegendes über Primzahlen

Restklassen

Faktorisierung von Zahlen

Diskussion der Rechenzeit

Ausblick auf verbesserte Primzahlentests

Nutzung der Primzahlen in dem RSA - Verfahren

Literatur:

Algorithmen der elementaren Zahlentheorie, Deutsches Institut für Fernstudien an der Universität Tübingen (*1)

Informatische Bildung und Computer in der Schule Nr. 5/96, LOG IN Verlag (*2)

 

Grundlegendes über Primzahlen

Eine von 1 verschiedene, natürliche Zahl ist eine Primzahl, wenn sie nur durch sich selbst und durch 1 teilbar ist.

Die ersten Primzahlen sind 2, 3, 5, 7, 11, 13, 17, 19, 23, ... . Es gibt unendlich viele Primzahlen (Euklidscher Primzahlensatz) die in der Menge der natürlichen Zahlen unregelmäßig verteilt sind.

Der Primzahlsatz von Euklid lautete ursprünglich:

 

Beweis: Es seien n Primzahlen vorgegeben (p1, p2, ..., pn). Die Zahl p1 * p2 * ... * pn + 1 ist durch keine der vorgegebenen Zahlen teilbar. Sie ist somit entweder selbst eine neue Primzahl oder das Produkt von mehreren neuen Primzahlen.

Beispiel: Vorgegeben sind jeweils die in der Summe aufgeführten Primzahlen.

2 * 3 + 1 = 7 ;7 ist eine "neue" Primzahl

2 * 3 * 5 + 1 = 31 ;31 ist eine "neue" Primzahl

3 * 5 + 1 = 16 = 2 *2 * 2 * 2 ;16 ist keine Primzahl, aber sie ist das Produkt aus der "neuen" Primzahl 2.

2 * 5 + 1 = 11 ;11 ist eine "neue" Primzahl

Begründung: Keine der Vorkommenden Primzahlen kann Teiler der Summe sein, da sie nur genau den ersten Summanden teilen.

Eines der bekanntesten Verfahren um herauszufinden welche Zahlen Primzahlen sind, ist das "Siebverfahren des Eratosthenes". Es basiert auf folgender Idee:

Die natürlichen Zahlen der Reihe nach aufzuschreiben. Die 1 wird gestrichen.

Die 2 wird als Primzahl gekennzeichnet. Nun wird jede 2te Zahl (durch 2 teilbare Zahl, also gerade Zahl) gestrichen.

Die nächste ungestrichenen Zahl ist die 3, sie ist ebenfalls eine Primzahl. Jetzt wird jede dritte Zahl nach der 3 gestrichen, wobei auch bereits gestrichene Zahlen mitgezählt werden.

So zeigt sich, dass die 5 die nächste ungestrichene Zahl, ebenfalls Primzahl ist. Mit ihr wird das Verfahren fortgesetzt.

Beispiel für eine so erstellte Primzahltabelle:

-

2

3

-

5

-

7

-

-

-

11

-

13

-

-

-

17

-

19

-

-

-

23

-

-

-

-

-

29

-

31

-

-

-

-

-

37

-

-

-

41

-

43

-

-

-

47

-

-

-

-

-

53

-

-

-

-

-

59

-

61

-

-

-

-

-

67

-

-

-

71

-

73

-

-

-

-

-

79

-

-

-

83

-

-

-

-

-

89

-

-

-

-

-

-

-

97

-

-

-

101

-

103

-

-

-

107

-

109

-

-

-

113

-

-

-

-

-

-

-

-

-

-

-

-

-

127

-

-

-

131

-

-

-

-

-

137

-

139

-

-

-

-

-

Fazit: Das Verfahren beruht auf der Idee, zu zeigen welche Zahlen keine Primzahlen sind und diese zu streichen. Die Primzahlen bleiben dann am Ende des Verfahrens übrig. Es ist einfacher zu zeigen, dass eine Zahl mit Sicherheit keine Primzahl ist, als ihre Primzahleigenschaft zu beweisen.

Wie bereits angemerkt, ist die Verteilung der Primzahlen in der Menge der natürlichen Zahlen unregelmäßig.

Die relative Häufigkeit der Primzahlen in einem Intervall von 1 bis x wird jedoch um so kleiner, je größer x wird. Man könnte also sagen die Primzahldichte wird mit wachsendem x immer geringer. Die Anzahl der Primzahlen unterhalb von einer Grenze x lässt sich jedoch Abschätzen.

Primzahlsatz:

 

Schon früh haben Mathematiker versucht eine Funktion zu finden, deren Wertebereich eine möglichst große Teilmenge der Primzahlen darstellt. Noch wurde keine Funktion gefunden, deren Wertebereich nur Primzahlen erhält. Jedoch wurde erkannt, dass manche Primzahlen von einer ganz bestimmten Form sind.

Mersennsche Zahlen sind Zahlen von der Form:

Mp = 2p - 1 ; p ist eine Primzahl kleinergleich 257

Fermatsche Zahlen sind Zahlen von der Form:

Fn = 22^n + 1 ; n ist eine natürliche Zahl

Primzahlen, die eine der beiden Formen annehmen gehören dann zu der Familie der Mersennschen bzw. Fermatschen Primzahlen.

(vgl. *1; S 43 - 60)

Restklassen

Der Begriff der Restklassen greift zurück auf die Kongruenz.

Zwei ganze Zahlen heißen kongruent modulo n (in Zeichen a = b mod n), wenn bei der Division der beiden Zahlen a und b durch n derselbe Rest bleibt oder, anders ausgedrückt, wenn n ein Teiler von a - b ist.

Bsp.: 4 =10 mod 3, denn 4 : 3 = 1 Rest 1

und 10 : 3 = 3 Rest 1 .

und 10 - 4 = 6 (teilbar durch 3)

Beide Zahlen haben den gleichen Rest (hier 1), ihre Differenz ist Teilbar durch n (hier 3 ) ohne dass ein Rest entsteht.

Als Reste bei der Division durch eine beliebige Zahl n treten die Zahlen 0, 1, ..., n-1 auf.

Für die Restklassen sind die Addition, die Subtraktion und die Multiplikation eindeutig definiert. Ebenso gelten das Assoziativgesetz, das Kommutativgesetz und das Distributivgesetz.

Faktorisierung von Zahlen

Jede Zahl, die keine Primzahl ist, lässt sich als Produkt von Primzahlen darstellen.

Bsp.: 30 = 2 * 3 * 5

Theoretisch lässt sich nun jede beliebig große Zahle in ihre Primfaktoren zerlegen. Dafür muß im Grunde nur jede Primzahl, die kleiner oder gleich Wurzel(n) ist, auf ihre Eigenschaft als Teiler geprüft werden.

Allerdings beinhaltet dieses eigentlich einfache Verfahren einen sehr großen Rechenaufwand, wenn die Zahlen, die zu prüfen sind, sehr groß werden. Bei einer Zahl in der Größenordnung von 10^100 müßte ein Rechner im ungünstigen Fall ca. 8 * 10^47 Primzahlen auf ihre Teilereigenschaft testen. Für dieses Vorhaben bräuchte selbst ein Großrechner eine Rechenzeit von 10^28 Jahren (was das Alter des Weltalls überträfe).

Die Sicherheit des RSA-Verschlüsselungssystem beruht auf genau diesem Phänomen.

Es existieren zwar verschiedene Algorithmen, die eine leichte Verbesserung des "naiven Probierverfahrens" darstellen, diese stellen allerdings für wirklich große Zahlen noch keine wesentliche Verkürzung der Rechenzeit dar.

Diskussion der Rechenzeit

Als Maß für die Dauer des Rechenvorgangs kann die Anzahl der elementaren Rechenoperationen, die zur Ausführung eines Algorithmus erforderlich sind, angesehen werden. Unter einer elementaren Rechenoperation wird die Addition, die Subtraktion, die Multiplikation oder die Division von Zahlen des vom Computer verarbeiteten Standardformats verstanden.

Die Anzahl der nötigen Rechenoperationen lässt sich durch folgende Formel abschätzen:

const * (ln n)²

Da bei der Rechenzeit in erster Linie die Anzahl der Rechenoperationen im Bezug auf die Änderung von n ausschlaggebend sind, ist der exakte Wert der Konstante uninteressant.

Man unterscheidet zwei Arten von Algorithmen:

1) Algorithmen mit polynomialem Verhalten:

Die Anzahl der Ziffern von n bestimmt die Anzahl der Rechenoperationen, da die Anzahl der elementaren Rechenoperationen im sich wesentlichen durch eine Potenz des natürlichen Algorithmus abschätzen lässt.

2) Algorithmen mit nicht polynomialem Verhalten:

Die Anzahl der Rechenoperationen mit n wächst stärker als jede Potenz von (ln n)

Alle bis heute bekannten Algorithmen zur Faktorisierung einer natürlichen Zahl zeigen nicht-polynominales Verhalten.



Nutzung der Primzahlen in dem RSA - Verfahren

Das RSA - Verfahren beruht auf der Schwierigkeit, große Zahlen in Primfaktoren zu zerlegen.

Ein Produkt aus zwei großen Primzahlen zu bilden ist für jeden Rechner einfach. Sind diese Primzahlen jedoch nicht bekannt, so ist es sehr schwer sie herauszufinden, da dies die Kapazitäten der Rechner überfordert und eine Rechenzeit von mehreren Jahren erfordern würde. Deswegen werden die Primzahlen nach der Multiplikation sofort vernichtet.

Deswegen ist das RSA - Verfahren eines der sichersten Verschlüsselungsverfahren - bis ein Verfahren zur schnellen Faktorisierung gefunden wird.

 

Referentin: Tina Scholz,

MSS 13/2,

INF 1, SHM

Impressum · Datenschutz