Faktorisierungsmethode von Fermat

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. April 2006 um 11:52 Uhr durch Stefan Birkner (Diskussion | Beiträge) (Beispiel mit wenigen Iterationen: stil). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Faktorisierungsmethode von Fermat ist ein Algorithmus aus dem mathematischen Teilgebiet Zahlentheorie. Mit seiner Hilfe kann man eine ungerade, zusammengesetze Zahl in zwei Faktoren zerlegen. Der Algorithmus berechnet also zu einer ungeraden, zusammengesetzten Zahl zwei ganze Zahlen und , so dass gilt

Verwendet man zusätzlich zur Faktorisierungsmethode von Fermat noch die Division durch 2, so kann durch wiederholte Anwendung die Primfaktorzerlegung einer Zahl bestimmt werden. Nahezu alle schnellen heute bekannten Faktorisierungsverfahren für große Zahlen gehen letztlich auf die Methode von Fermat zurück.

Pierre de Fermat beschrieb diese heute nach ihm benannte Faktorisierungsmethode 1643 in einem Brief (vermutlich an Mersenne oder Frenicle). Einige Historiker vermuten, dass die Methode aber schon früher bekannt war.

Funktionsweise

Für jede ungerade zusammengesetzte Zahl   lässt sich mindestens eine Zerlegung in ein Produkt ungerader Zahlen größer als 1,  , finden.

Dieses Produkt lässt mit den ganzen Zahlen   und   in der Form   schreiben (siehe 3. Binomischen Formel). Das Fermatsche Verfahren findet diejenige Zerlegung in zwei Faktoren   und   mit der geringsten Differenz von   und  .

Das folgende Nassi-Shneiderman-Diagramm zeigt den Ablauf des Algorithmus. Dabei bezeichnet   die kleinste Zahl größer oder gleich  .

Berechne  
solange   keine Quadratzahl
 
Berechne  
Berechne  
Berechne  

Anmerkungen

Der Algorithmus liefert auch korrekte Ergebnisse, wenn die vorgegebene Zahl eine Quadratzahl ist.

Eine Vereinfachung des Algorithmus erreicht man, indem man zwei Eigenschaften von Quadratzahlen ausnutzt, die auch schon Fermat bei seinen (von Hand durchgeführten) Berechnungen angewandt hat:

  •   lässt sich aus   schnell berechnen:
      (1. binomische Formel)
  • es gibt nur 22 Möglichkeiten für die letzten beiden Ziffern einer Quadratzahl: 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.

Beispiele

Beispiel mit vielen Iterationen

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:

422 - 1729 = 35
432 - 1729 = 120
442 - 1729 = 207
452 - 1729 = 296
462 - 1729 = 387
472 - 1729 = 480
482 - 1729 = 575
492 - 1729 = 672
502 - 1729 = 771
512 - 1729 = 872
522 - 1729 = 975
532 - 1729 = 1080
542 - 1729 = 1187
552 - 1729 = 1296 fertig! 1296 = 362 und damit eine Quadratzahl.

Man erhält x=55 und y=36 und damit nach der 3. Binomischen Formel 1729 = 552-362 = (55+36)(55-36) = 91 · 19. Die Probedivision durch die Primzahlen 2, 3, 5, 7, 11, 13, 17 und 19 wäre hier etwa doppelt so schnell zum Ziel gelangt. Wegen 1729 mod 4 = 1, hätte man sich allerdings den Test für die geraden Zahlen ersparen können. Da 120*480 bereits eine Quadratzahl ist, kann die Zerlegung mittels eines optimierten Verfahrens auch noch etwas schneller gefunden werden.

(Anmerkung: 91 = 7 · 13, die komplette Faktorisierung von 1729 ist somit 7 · 13 · 19 )

Beispiel mit wenigen Iterationen

Am Beispiel der Zahl 290377 sieht man, dass es Zahlen gibt, bei der die Faktorisierungsmethode von Fermat sehr schnell eine Zerlegung berechnet. Die Wurzel aus 290377 beträgt etwa 538,9. Die nächste ganze Zahl   ist somit 539. Es zeigt sich, dass   schon beim ersten Einsetzen von   ein Quadratzahl ist:

 

Man kann nun sofort die beiden Faktoren von   berechnen:

 
 
 

Eine Zerlegung von 290377 lautet damit

 

Weder   noch   sind Primzahlen. Aber man kann den Algorithmus erneut auf 551 und 527 anwenden, um die vollständige Primfaktorzerlegung zu erhalten.

Laufzeitanalyse

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 auseinanderliegen braucht auch dieses Verfahren sehr viele Iterationen. Im schlechtesten Fall, nämlich bei n = 3p, wobei p eine Primzahl ist, benötigt dieses Verfahren O(n/6-√n)=O(n) viele Schritte.

Weiterentwicklung: Multiplikation mit einem Faktor

Um den hohen Rechenaufwand für Zahlen, die nicht in zwei annähernd gleich große Faktoren zerlegt werden können, zu umgehen kann man die Faktorisierungsmethode für ein Vielfaches   der ursprünglichen Zahl   durchführen. Dabei wird   so gewählt, dass   in zwei annähernd gleich große Faktoren zerlegt werden kann. Eine günstige Wahl für   sind ungerade Zahlen oder Produkte ungerader Zahlen. Die größten gemeinsamen Teiler zwischen   und einem der berechneten Faktoren   und   von   sind jeweils Teiler von  :

 
 

Als Beispiel soll die Zahl 1729 in zwei Faktoren zerlegt werden. Die Zahl 120*1729 = 207480 kann bereits nach zwei Iterationen in die Faktoren 420 und 494 zerlegt werden. Teiler von 1729 können als größte gemeinsame Teiler berechnet werden:

 
 

Damit hat man eine Faktorisierungen der Zahl 1729:

 

Literatur