Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Berechnung des multiplikativen Inversen

Berechnung des multiplikativen Inversen

Universität / Fachhochschule

Algebraische Zahlentheorie

Tags: Modulo Arithmetik, Zahlentheorie

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
Avrat

Avrat aktiv_icon

17:58 Uhr, 18.04.2011

Antworten
GHallo,

da ich zum ersten Mal in diesem Forum bin und nicht genau weiß, wo genau ich lande, schicke ich voraus, daß ich kein Mathematik-(sondern Philosophie)-Student bin, es mir um die Berechnung des multiplikativen Inversen geht und ich zuletzt auf einer Seite dieses Forums war, auf der es genau um dieses multiplikative Inverse ging und Naico und michaL den für mich vielversprechendsten Lösungsansatz diskutierten.
Ich habe bisher herausgefunden, daß man offenbar mit dem erweiterten Euklidschen Algorithmus dieses Inverse berechnen kann. Wie dieser Algorithmus angewendet wird, habe ich inzwischen begriffen. Mein konkreter Fall: ggT von 37457 und 2147483647 berechnen.

2147483647=37457 · 57331+36380
37457=36380 · 1+1077
36380=1077 · 33+839
1077=839 · 1+238
839=238 · 3+125
238=125 · 1+113
125=113 · 1+12
113=12 · 9+5
12=5 · 2+2
5=2 · 2+1

Damit ist formal bewiesen, daß 37457 und 2147483647 teilerfremd sind – aber das wußte ich vorher schon, denn (nicht ganz) zufälligerweise ist 2147483647 eine Primzahl. Der einzige Grund, warum ich mir diesen Algorithmus überhaupt genauer angesehen habe, war, daß auf mehreren Internet-Seiten (und in mehreren Google-Büchern) behauptet wird, als "Nebeneffekt" des erweiterten Euklidschen Alsgorihtmus (künftig e.E.A.) erhielte man auch das multiplikative Inverse.
Und genau das ist es, was mich nach drei Tagen Problemwälzen beinahe zur Verzweiflung treibt. Denn ich habe einerseits das Gefühl, nicht weit entfernt von der Lösung meines Problems zu sein, kann aber andererseits so gar nicht erkennen, inwiefern man aus den Rechenschritten oben das multiplikative Inverse (künftig m.I.) ableiten kann.
Auf mehreren Seiten habe ich sinngemäß ferner gelesen, daß die Formel

ggT(a, b)= xa + yb

bei der Berechnung eine Rolle spielt; es ist mir aber in keiner Weise klar, in welcher Beziehung xa + yb zum e.E.A. steht. Sie scheint eine Rolle bei dem zu spielen, was Naico "Rückwärtseinsetzen" genannt hat, und was der eigentliche Lösungsweg ist (den man wirklich nicht als "Nebeneffekt" des e.E.A. bezeichnen kann, sondern als eigenständige und auch nicht-triviale Operation ansehen muß). Der auf jener Seite diskutierte Fall war simpler, nämlich

800=73 · 10+70
73=70 · 1+3
70=3 · 23+1

Dazu schrieb michaL:

"Aus der letzten Zeile folgt:

1=1 · 70-23 · 3
=1 · 70-23(1 · 73-1 · 70)=24 · 70-23 · 73
=24(1 · 800-10 · 73)-23 · 73=24 · 800-263 · 73 "

An dieser (entscheidenden) Stelle habe ich mich festgefahren. Wie kommt man von

1 · 70-23(1 · 73-1 · 70)
zu
24 · 70-23 · 73

? Mir ist natürlich klar, daß es hier genau um dieses Rückwärtseinsetzen geht und daß besagte Formel xa + yb dabei offenbar die entscheidende Rolle spielt. Mir ist aber weder der theoretische Hintergrund für diese Formel noch ihre Anwendung auf meinen anfangs geschilderten Fall, also das m.I. von 37457 zum Modul 2147483647 klar, so daß gilt:

37457 · x1mod2147483647

Bin für jeden Hinweis dankbar.

Walter

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Online-Nachhilfe in Mathematik
Antwort
michaL

michaL aktiv_icon

19:23 Uhr, 18.04.2011

Antworten
Hallo,

wieso kannst du nicht erkennen, warum 17023(173170) und 24702373 gleich sind? Ganz konkret!?!

Mfg Michael
Avrat

Avrat aktiv_icon

13:58 Uhr, 19.04.2011

Antworten
Natürlich erkenne ich, daß beide Terme gleich sind, dazu muß man es ja nur in den Taschenrechner eintippen. Worum es mir ging, war, etwas mehr über die Form 1= ax + by zu erfahren, in die der Term 1 ⋅ 7023(173 − 1 ⋅ 70) überführt werden soll. Ich denke, das ging auch aus meinem Text klar hervor (ausführlich genug war er ja nun wirklich).
Was mich - als Nichtmathematiker - bei der Beschäftigung mit der Frage "multiplikatives Inverses" geärgert hat, war, daß überall, wo etwas im Netz zu dieser Frage stand, immer wieder behauptet wurde, als "Abfallprodukt" des erweiterten Euklidschen Algorithmus könne man dieses Inverse berechnen. Und so etwas kann eben nur von "Leuten der Zunft" kommen, die mit uns nichterleuchteten Laien keinerlei Mitleid haben.
Ich habe nach genauerem Studium begriffen, daß 1 ⋅ 7023(173 − 1 ⋅ 70) einfach ausmultipliziert werden muß, aber eben so, daß am Ende ein Term der Form ax + by herauskommt. Wieso und warum, weiß ich noch immer nicht – es ist einfach so. Ich habe das dann für mein Beispiel am Anfang (37457x1mod2147483647) durchgeführt und herauskam:

1= –2 · 12+5 · (113 – 9 · 12)=5 · 11347 · 12
1=5 · 11347 · (125 – 1 · 113)= –47 · 125+52 · 113
1= –47 · 125+52 · (238 – 1 · 125)=52 · 23899 · 125
1=52 · 23899 · (839 – 3 · 238)= –99 · 839+349 · 238
1= –99 · 839+349 · (1077 – 1 · 839)=349 · 1077448 · 839
1=349 · 1077448 · (3638033 · 1077)= –448 · 36380+15133 · 1077
1= –448 · 36380+15133 · (37457 – 1 · 36380)=15133 · 3745715581 · 36380
1=15133 · 3745715581 · (214748364757331 · 37457)
= – 15581 · 2147483647+893289444 · 37457

x ist damit 893289444. Und das soll nun die effizienteste Vorgehensweise sein, um das m.I. zu berechnen? Gibt es, insbesondere für größere Zahlen wie meine, keinen komfortableren Weg?

Antwort
xtraxtra

xtraxtra aktiv_icon

15:22 Uhr, 20.04.2011

Antworten
Wenn du es per Hand rechnen willst, wird es wohl keinen bequemeren Weg geben.
Avrat

Avrat aktiv_icon

19:36 Uhr, 20.04.2011

Antworten
Ich will es gerade nicht per Hand rechnen. Wenn Du also eine Alternative weißt, wäre ich Dir sehr dankbar.
Ich habe mich natürlich auch selbst schon ein wenig umgesehen. Folgendes kleine Basic-Programm z.B. berechnet das multiplikative Inverse:

For i = 1 To m
mix = (m*i+1)/x
If mix = Int(mix) Then Exit For
Next
Print mix

Im Falle von 37457x ≡ 1 mod 2147483647 müßte man also m = 2147483647 und x = 37457 setzen; dazu wird dann das multiplikative Inverse mix berechnet.
Das Problem: Da i immer nur um 1 hochgezählt wird, kann es bei großen Zahlen recht lange dauern, bis das Ergebnis kommt. Mit den angegebenen Zahlen wird die Schleife über 15000 mal durchlaufen, was auf schnellen Rechnern Bruchteile von Sekunden dauert. Ich hatte aber auch schon Zahlen für m und x, an denen mein Rechner fast eine Minute lang gerechnet hat.
Was ich bisher noch nicht erwähnt habe: Ich brauche das multiplikative Inverse zur Erzeugung von Zufallszahlen in einem inversiven Kongruenzgenerator, der möglichst schnell arbeiten soll. Dazu taugt das Programm oben nicht, weil es viel zu langsam ist.
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.