Primzahlen: IIIb. Kapitel: Primfaktorzerlegung

Aus testwiki
Version vom 25. November 2013, 19:55 Uhr von 2003:64:aa87:cb01:e2cb:4eff:fe1b:b546 (Diskussion) (Fix calculation)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Vorlage:Navigation Buch

Primfaktorzerlegung

Einleitung

Angenommen, man hat eine Zahl vor sich, z.B. 7657 und möchte nun die Teiler dieser Zahl bestimmen. Mal vorausgesetzt, es handelt sich um keine Primzahl, kann man anfangen, die Zahl auf einzelne Teiler zu testen:

Die letzte Ziffer ist 7, also ist sie weder durch 2 noch durch 5 teilbar. Die Quersumme ist 25, die nicht durch 3 teilbar ist, und damit ist 7657 auch nicht durch 3 teilbar.
Durch 7 dividiert ergibt 7657 als Ergebnis 1093 Rest 6. Folglich ist 7657 auch nicht durch 7 teilbar. Machen wir es kurz: 7657 ist auch nicht durch 11, 17, 23 und 29 teilbar. Die Primfaktorzerlegung von 7657 ist 13·19·31.

Um die Primfaktorzerlegung zu Automatisieren, kann man nun, rein theoretisch, die Teilbarkeit durch eine Liste von Primzahlen testen, die in dem Programm fest vorgegeben ist. Das hat zwei Nachteile:

  1. Das Programm wird dadurch ziemlich groß.
  2. Es besteht immer die Möglichkeit, dass die Zahl, zu der die Primfaktorzerlegung durchgeführt werden soll, Primfaktoren enthält, die in dem Programm nicht vorhanden sind.

Die Mutter aller Faktorisierungsverfahren

Es gibt ein Verfahren, mit dem man diese Probleme umgehen kann. Dieses Verfahren heißt nach dem französischen Amateurmathematiker Pierre de Fermat die Primfaktorzerlegung nach Fermat. Aber zuerst ein paar Überlegungen:

Eine zusammengesetzte, ungerade natürliche Zahl n läßt sich als Produkt zweier ungerade natürlicher Zahlen t1 und t2 darstellen:
n=t1t2
Man kann, unter der Bedingung t2<t1, zwei natürliche Zahlen a und b mit b<a finden, so dass t1=a+b und t2=ab gilt, nämlich als Lösung eines linearen Gleichungssystems mit den Variablen a, und b. Über die dritte binomische Formel kommt man zu der Gleichung n=a2b2:
n=t1t2=(t1+t22)2(t1t22)2=a2b2
Man kann n also auch als Differenz zweier Quadrate ansehen Das ist die Grundlage für die Primfaktorzerlegung nach Fermat: Wenn man eine Quadratzahl a findet, so dass für a2n=r auch r ein Quadrat ist (r=b2), so kann man zwei Teiler bestimmen.

Bei dem Fermatschen Verfahren sind ein paar Dinge zu beachten:

  1. Das fermatsche Verfahren kann nur ungerade Zahlen faktorisieren. Zweierpotenzen sind also vor der Primfaktorisierung zu entfernen.
  2. Das fermatsche Verfahren kann Quadrate nicht von Primzahlen unterscheiden (dazu später mehr).

Der Bereich des Fermatschen Verfahren läßt sich eingrenzen:

Man beginnt bei dem kleinsten a mit a2>n. Die obere Grenze liegt bei a=n12+1, so dass b=n12 ist.

Die Effizienz des Faktorisierungsverfahren nach Fermat hängt vom Aufbau der zu testenden Zahl ab. Es folgen ein ideales und ein negatives Beispiel.

Das ideale Beispiel

Zu faktorisieren ist die Zahl 19043. Die untere Grenze liegt bei a=138 und die obere Grenze bei a=9522. Schon bei

138219043=1904419043=1

findet man ein Quadrat, was die Zerlegung

19043=138212=(138+1)(1381)=139137

liefert.

Wie man sehen kann, liegt der kleinste positive Treffer a2n=b2 mit a=138 bei der unteren Grenze. Und nicht nur das, er liefert auch gleich die vollständige Primfaktorzerlegung 19043 = 137·139 zurück. Dass dies so ist, liegt daran, dass die Zahl nur aus zwei Primfaktoren besteht und außerdem die beiden Primfaktoren dicht beieinander liegen.

Die obere Grenze führt noch zu:

9522219043=9066848419043=90649441=95212,

was die Zerlegung

19043=9522295212=(9522+9521)(95229521)=190431

liefert.

So ein Fall kommt eher selten vor; deshalb folgt noch das Negativbeispiel.

Das negative Beispiel

Zu faktorisieren ist die Zahl 12341. Die untere Grenze liegt bei a=112 und die obere Grenze bei a=6170.

112212341=1254412341=203 ist kein Quadrat,
113212341=1276912341=428 ist kein Quadrat,

und so weiter. Erst bei

165212341=2722512341=14884=1222

findet man ein Quadrat, was die Zerlegung

12341=16521222=(165+122)(165122)=28743

liefert.

Die weiteren Prüfungen liefern (nur) für die Zahlen 171, 885 und 6171 Treffer. Diese Zahlen führen zu folgenden Zerlegungen:

12341=17121302=(171+130)(171130)=2874312341=88528782=(885+878)(885878)=1763712341=6171261702=(6171+6170)(61716170)=123411

Erst bei a=165 liefert die Gleichung a2n=b2 den ersten positiven Treffer. Das bedeutet, es müssen 53 Quadratzahlen getestet werden, bis der erste Treffer gefunden wird. Demgegenüber findet man beim Divisionsverfahren schon mit der vierten Primzahl (der 7) einen Teiler. Noch schlechter ist, dass 12341 = 287·43 nicht die komplette Primfaktorisierung zurückliefert.

Man braucht alle drei Treffer, um alle Primfaktoren zu ermitteln, und erst ein Kreuzvergleich über den größten gemeinsamen Teiler mit allen Teilergebnissen bringt Sicherheit.