Benutzer:Lantani/Faktorisierungsmethode von Fermat

Die Faktorisierungsmethode von Fermat ist ein Algorithmus aus dem mathematischen Teilgebiet Zahlentheorie. Er berechnet zu einer ungeraden, zusammengesetzten Zahl zwei Teiler und , für die gilt.

Die Faktorisierungsmethode von Fermat hat nur dann eine gute Laufzeit, wenn sich die zu zerlegende Zahl als Produkt annähernd gleich großer Faktoren darstellen lässt. Sie bildet zudem die Grundlage allgemeiner Faktorisierungsverfahren für große Zahlen, die in der Regel eine bessere Laufzeit aufweisen.

Pierre de Fermat beschrieb diese heute nach ihm benannte Faktorisierungsmethode 1643 in einem Brief, der vermutlich an Mersenne oder Frénicle de Bessy adressiert war. In diesem Brief demonstrierte er das Verfahren, indem er die Primfaktorzerlegung von 2.027.651.281 berechnete.[1] Einige Historiker vermuten aber, dass die Methode schon früher bekannt war.

Neue Beispiele

Bearbeiten
Beispiel 1
 
         
42 85 1764 35 irrational
43 87 1849 120 irrational
44 89 1936 207 irrational
45 91 2025 296 irrational
46 93 2116 387 irrational
47 95 2209 480 irrational
48 97 2304 575 irrational
49 99 2401 672 irrational
50 101 2500 771 irrational
51 103 2601 872 irrational
52 105 2704 975 irrational
53 107 2809 1080 irrational
54 109 2916 1187 irrational
55 111 3025 1296 36
Beispiel 2
 
    mod    
45030 49619 z9 > 222 < 44808
45031 139680 > 373 < 44658
45032 229743 > 479 < 44553
45033 319808 z9 > 565 < 44468
45034 409875 z9 > 640 < 44394
45035 499944  9 > 707 < 44328
45036 590015 z9 > 768 < 44268
45037 680088 z9 > 824 < 44213
45038 770163 z9 > 877 < 44161
45039 860240 z9 > 927 < 44112
45040 950319 > 974 < 44066
45041 1040400    1020 44021
Beispiel 3
 
    mod    
210 79 > 8 < 202
211 500  9 > 22 < 189
212 923 z9 > 30 < 182
213 1348 > 36 < 177
214 1775 z9 > 42 < 172
215 2204  9 > 46 < 169
 
224 6155 z9 > 78 < 146
225 6604 1. > 81 < 144
255 21004 2. > 144 < 111
261 24100 3. > 155 < 106
285 37204 4. > 192 < 93
315 55204 5. > 234 < 81
339 70900 6. > 266 < 73
345 75004 7. > 273 < 72
375 96604 8. > 310 < 65
405 120004 9. > 346 < 59
411 124900 10. > 353 < 58
 
7335 53758204 333. > 7331 < 4
7365 54199204 334. > 7362 < 3
 
22005 484176004 1017. > 22003 < 2
22011 484440100 1018. 22010 1

Neuer Text

Bearbeiten

Der Fall, dass bereits   zu einer Quadratzahl   führt, tritt ein, wenn  . Dabei sind diese drei Bedingungen äquivalent:

  •  
  •  
  •   mit  

Dieser Fall tritt also genau dann ein, wenn die Quadratwurzeln der beiden Faktoren einen Abstand kleiner als   haben.

Beweis:

Es sei   ganz und ungerade. Wir definieren  ,   und  . Damit sind   und   beide ganz und es gilt   und  . Dagegen ist   nicht notwendig ganz.

    nach der Definition der Aufrundungsklammer  
    durch einfache algebraische Umformungen

Da alle   und   beide positiv sind, ist das äquivalent zu

 
 
 
 
 

Für   im Intervall   wird die Funktion   definiert. Sie ist streng monoton steigend. Mit der Monotonie von   folgt, dass   genau dann gilt, wenn  , und dies genau dann wenn  . Die beiden Seiten der Ungleichung werden jetzt einzeln berechnet:

 
 
 

Algorithmus

Bearbeiten

Sei   die zu faktorisierende ungerade Zahl. Die Faktorisierungsmethode von Fermat berechnet nacheinander die Werte

 
 
 
 

Dabei bezeichnet   die kleinste ganze Zahl größer oder gleich  .

Dies wird fortgesetzt, bis einer dieser Werte eine Quadratzahl ist:

 

Aufgrund der dritten binomischen Formel gilt dann

 

Dabei erhält man diejenige Zerlegung von  , für die das Verhältnis   (mit  ) am kleinsten ist.

Das folgende Nassi-Shneiderman-Diagramm zeigt den Ablauf des Algorithmus, wie er schon von Fermat angewandt wurde. Dabei wird das wiederholte Quadrieren der obigen Beschreibung vermieden. Die einzelnen Werte werden dazu mittels der ersten binomischen Formel aus ihrem jeweiligen Vorgänger berechnet:

 
Berechne  
Berechne  
solange   keine Quadratzahl
 
 
Berechne  
Berechne  
Berechne  

Anmerkung

Bearbeiten

Indem man die letzten beiden Ziffern von   überprüft, kann man in vielen Fällen ausschließen, dass   eine Quadratzahl ist. Bei einer Quadratzahl gibt es nur 22 Möglichkeiten: 00, x1, x4, 25, y6 und x9, wobei x für eine gerade und y für eine ungerade Ziffer steht. Man kann also bei vielen Zahlen durch Überprüfung der letzten beiden Ziffern ausschließen, dass es Quadratzahlen sind. Auch Fermat nutzte diese Eigenschaft der Quadratzahlen. Dies funktioniert auch mit anderen quadratischen Resten, etwa Zweierpotenzen, die sich auf einer klassischen Computerarchitektur leicht überprüfen lassen. Diese Idee kann man verallgemeinern, indem man nicht nur die Quadrate, sondern die quadratische Gleichung in zwei Variablen bezüglich ihrer Reste untersucht:

 

Wegen der Eigenschaft   kann es für   maximal   mögliche Reste geben, wenn   und   teilerfremd sind. Durch Kombinieren der Restklassen bezüglich verschiedener Primzahlen (bzw. kleiner Primzalpotenzen) lassen sich die Lösungen für   pro verwendeter Restklasse jeweils nahezu halbieren.

Beispiele

Bearbeiten

Beispiel mit vielen Iterationen

Bearbeiten

Man möchte Faktoren der Zahl 1729 bestimmen. Die Wurzel aus 1729 beträgt etwa 41,6. Die erste Zahl  , für die man   berechnet, ist also die 42.

     
42 35 85
43 120 87
44 207 89
45 296 91
46 387 93
47 480 95
48 575 97
49 672 99
50 771 101
51 872 103
52 975 105
53 1080 107
54 1187 109
55 1296 = 362

Man kann nun sofort die beiden Faktoren von   berechnen:

 
 
 

Eine Zerlegung von 1729 lautet damit:

 

19 ist Primzahl, 91 nicht. Man kann nun den Algorithmus erneut auf 19 und 91 anwenden, um die vollständige Primfaktorzerlegung zu erhalten.

Beispiel mit wenigen Iterationen

Bearbeiten

Am Beispiel der Zahl 717583 sieht man, dass es Zahlen gibt, bei der die Faktorisierungsmethode von Fermat sehr schnell eine Zerlegung berechnet. Die Wurzel aus 717583 beträgt etwa 847,1. Die nächste ganze Zahl   ist somit 848. Es zeigt sich, dass   schon im ersten Schritt eine Quadratzahl ist:

 

Man kann nun sofort die beiden Faktoren von   berechnen:

 
 
 

Eine Zerlegung von 717583 lautet damit

 

Hier sind 809 und 887 beide Primzahlen. Um das zu sehen und so die Vollständigkeit der Primfaktorzerlegung nachzuweisen, kann man den Algorithmus erneut auf 809 und 887 anwenden.

Grafisches Beispiel

Bearbeiten

Alle ganzzahligen Teiler können als Punkte in einer Teilerfläche dargestellt werden. Die  -Achse gibt jeweils die Teilerwerte wieder, die  -Achse entspricht einem ganzzahligen Zahlenstrahl (zur besseren Nachvollziehbarkeit werden im Beispiel die  - und  -Achse im Verhältnis 1 zu 16 skaliert).

Die Teilerpunkte in einer Teilerfläche besitzen u. a. folgende Eigenschaften:

  • Alle Teilerpunkte der Teilerfläche können einer negativen Parabel der Form   zugeordnet werden.
  • Alle komplementären Teilerpaare einer Zahl befinden sich auf einer gemeinsamen Parabel.
  • Die Addition zweier komplementärer Teiler einer Zahl liefert den Koeffizienten   der gemeinsamen negativen Parabel.

Beispiel:

 
 
Fermat's factorization in the divisor plane

Die komplementären Teilerpaare von   sind die trivialen Teiler   und die nicht-trivialen Teiler  .

Die Schnittpunkte von Parabeln der Form   mit der Parallelen zur  -Achse   liefern somit Teilerkandidaten. Das Verschieben der Parabel liefert entweder die nicht-trivialen oder, im allerletzten Schritt, die trivialen Teiler einer Zahl.

Als erste negative Parabel mit einem Scheitelpunktwert größer   wird   identifiziert ( ). Nach mehrfachem Verschieben werden die Teiler   und   mit der Parabel   gefunden. Scheitelpunkt dieser Parabel ist  .

Die Zahl   ist somit als Differenz der Quadrate   darstellbar. Die nicht-trivialen Teiler lassen sich über   und   berechnen.

Da Parabeln der Form   ausschließlich komplementäre Teiler zu geraden Zahlen liefern werden sie in Fermat's Methode nicht berücksichtigt.

Funktionsweise

Bearbeiten

Die Faktorisierungsmethode von Fermat sucht nach zwei Quadratzahlen   und  , die die Gleichung   erfüllen. Auf Grund der 3. binomischen Formel ist dann

 

und   und   sind die gesuchten Teiler von  . Das Fermatsche Verfahren findet dabei genau diejenige Teiler   und  , die am nächsten zur Wurzel von   liegen.

Es stellt sich die Frage, ob immer zwei Quadratzahlen   und   existieren, die obige Gleichung erfüllen. Wäre dies nicht der Fall, würde der Algorithmus in eine Endlosschleife geraten. Im Folgenden sei   eine ungerade, zusammengesetzte Zahl, wie bei der Faktorisierungsmethode von Fermat vorausgesetzt. Dann ist   das Produkt zweier ungerader Zahlen   und   und damit sind auch

  und  

ganze Zahlen. Durch eine einfache Rechnung unter Anwendung der binomischen Formeln zeigt sich, dass   ist:

 

Die Zahl   lässt sich somit immer als Differenz zweier Quadratzahlen darstellen.

Laufzeitanalyse

Bearbeiten

Das Verfahren gelangt in wenigen Iterationen zu einer Lösung, wenn sich eine Zahl in zwei annähernd gleich große Faktoren zerlegen lässt. Wir können den größeren Faktor in der Form   mit einem   schreiben. Ist der Wert   sehr viel kleiner als 1, ergibt sich für die Zahl der notwendigen Iterationen annähernd  . In diesem Fall ist das Verfahren sehr viel schneller als die Probedivision.

Falls die Faktoren jedoch weit auseinander liegen, braucht auch dieses Verfahren sehr viele Iterationen. Im schlechtesten Fall bei  , wobei   eine Primzahl ist, benötigt dieses Verfahren   viele Iterationen.

Erweiterung: Faktorisierung eines Vielfachen

Bearbeiten

Um die schlechte Laufzeit für Zahlen zu umgehen, die nicht das Produkt zweier annähernd gleich großer Faktoren sind, kann man die Faktorisierungsmethode für ein Vielfaches   der ursprünglichen Zahl   durchführen. Die größten gemeinsamen Teiler zwischen   und je einem der berechneten Faktoren   und   von   liefern anschließend jeweils einen Teiler von  .

Als Beispiel betrachten wir die Zahl 1729, bei der die normale Faktorisierungsmethode 14 Schritte benötigt. Die Zahl   kann bereits nach zwei Iterationen in die Faktoren 420 und 494 zerlegt werden. Ein Teiler von 1729 kann als größter gemeinsamer Teiler berechnet werden:

 

Mit   hat man eine Faktorisierung der Zahl 1729:

 

Es stellt sich nun das Problem, einen geeigneten Faktor   zu finden. Russell Sherman Lehman hat 1974 mit der Faktorisierungsmethode von Lehman ein Verfahren entwickelt, das solche   findet. Dadurch verkürzt sich die Laufzeit auf  .

Faktorisierungsmethode von Fermat als Primzahltest

Bearbeiten

Die Faktorisierungsmethode von Fermat kann als Primzahltest verwendet werden,[2] auch wenn dies nicht besonders effizient ist. Aus der Laufzeitanalyse ist bekannt, dass die ungünstigste Eingabe für den Algorithmus eine Zahl der Form   ist (  ist dabei eine Primzahl). In diesem Fall ist

 

Lässt man nun als Eingabe   des Algorithmus beliebige ungerade Zahlen zu und ist keine der Zahlen

 

eine Quadratzahl, so ist   eine Primzahl.

Literatur

Bearbeiten
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Leonard E. Dickson: History of the Theory of Numbers. Volume 1. Divisibility and Primality. Dover Publications, 2005, ISBN 0-486-44232-2, S. 357.
  2. Richard Crandall, Carl Pomerance: Prime Numbers. A Computational Perspective. 2. Auflage. Springer-Verlag, New York, 2005, ISBN 0-387-25282-7, S. 191–192.