Modulo mit Potenzen?

4 Antworten

143 = 11 • 13
Zuerst für den Rest 11. Nach dem kleinen Satz von Fermat ist 7^(10) = 1 mod 11, also auch 7^20 = 1 mod 11 und damit bleibt nur 7³ zu berechnen. Es ist 7³ = (-4)³ mod 11 = -64 mod 11 = 2 mod 11.
Da für 13 auch 2 rauskommt, ist es hier sehr einfach und man hat
7^(23) = 2 mod 143


lks72  04.02.2018, 13:59

Für 13 ist 7^12 = 1 mod 13 nach dem kleinen Fermat, also auch 7^24. weil 2 • 7 = 14 = 1 mod 13, ist also 7^23 = 2 mod 13, noch als Ergänzung zu oben.

0

Du kannst - bei 1 beginnend - 23 mal {mit 7 multiplizieren und den 43-er Rest bilden.}

Besser verwendet man einen Algorithmus, mit dem man ganzzahlige Potenzen schneller berechnen kann:

Eingang Basis, Exponent (> 0)
Ergebnis <-- 1
solange Exponent > 0
    falls Exponent ungerade
        Ergebnis <-- Ergebnis * Basis
        Exponent <-- Exponent - 1
    Basis <-- Basis * Basis
    Exponent <-- Exponent / 2
Ausgang Ergebnis

und ergänzt den Schritt

        Ergebnis <-- Ergebnis * Basis

zu

        Ergebnis <-- Ergebnis * Basis
        Ergebnis <-- Ergebnis mod 143

sowie

    Basis <-- Basis * Basis

zu

    Basis <-- Basis * Basis
    Basis <-- Basis mod 143
Woher ich das weiß:Hobby – Hobby, Studium, gebe Nachhilfe

Ich habe es mit einem Java-Programm ausgerechnet, das nicht rundet (es nimmt genau deine Zahl). Das Ergenbnis ist:

11

Bild zum Beitrag

 - (Mathematik)

Isendrak  03.02.2018, 21:46

Nur dass es nicht um 7E23=700000000000000000000000 sondern um 7^23=27368747340080916343 geht...

Ausserdem hat dein Programm offenbar noch ein weiteres Problem: 7E23 mod 143 = 15... Nicht 11...

0
Isendrak  03.02.2018, 22:13
@hahanoob

Anmerkung zu dem fehlerhaften Ergebnis der Berechnung: Das liegt vermutlich daran, dass double für gewöhnlich 64 Bits verwendet (52 davon für die eigentlichen Ziffern), während für 7^23 mindestens 64.569163 (also 65) Bits benötigt werden (wäre dann wohl n Fall für nen java.math.BigInteger o.ä.).

0

Was gibts denn da groß zu "zerlegen"?

7^23 = 27368747340080916343

27368747340080916343 mod 143 = 2

P.S.: 7^23 <=> 7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7*7


thugox 
Fragesteller
 03.02.2018, 22:01

wenn ich 7^23 in meinen Taschenrechner eingebe, dann komme ich

2.736874734 x10 ^19

... also irgendwas komischen. Wenn ich damit weiter rechne und /143 eingebe, dann bekomme ich 1.9138 ... x10 ^17

0
Isendrak  03.02.2018, 22:07
@thugox

Okay, und warum rechnest du (7^23)/143 wenn du nach (7^23) mod 143 fragst?

P.S.: Was dein Taschenrechner anzeigt ist auf jeden Fall korrekt (das mit 2.736874734*10^19), er hat nur ein zu kleines Display um die komplette Zahl ohne weiteres anzuzeigen.

P.P.S.: x*10^y bedeutet nichts anderes als "verschiebe das Komma in x um y Stellen nach rechts".

1
BrauchJzHilfe  03.02.2018, 22:08
@thugox

*10^17 sind einfach 17 Nullen hinten dran... bzw Komma um 17 Stellen nach rechts

1
thugox 
Fragesteller
 03.02.2018, 22:15
@Isendrak

Ich bin gerade schwer vom Begriff ...

aber wie stelle ich sicher, wie oft 143 in die 2.736874734*10^19 reinpasst?

0
Isendrak  03.02.2018, 22:20
@thugox

Also was jetzt?

Willst du wissen, wie oft B in A passt? Dann: A/B

Willst du wissen, was der Rest der Division A/B ist? Dann A mod B

Im ersten Fall also: (7^23)/143 = 191389841539027387.0139860140

Im zweiten Fall: (7^23) mod 143 = 2

1
thugox 
Fragesteller
 03.02.2018, 22:25
@Isendrak

Ich will wissen, was der Rest der Division A/B ist. Das 2 das Ergebnis ist weiß ich auch. Aber den Rechenweg kann ich nicht nachvollziehen.

0
Isendrak  03.02.2018, 22:33
@thugox

Okay, der Rechenweg:

Methode 1: Machs wie in der Grundschule, z.B. 5/2=2 Rest 1. Mit anderen Worten: 5 mod 2 = 1.

Methode 2: mod(x, y) = x - (int(x / y) * y)

In deinem Fall kommt noch ein weiterer Schritt dazu, der vor dem ganzen Ausgeführt wird: 7^23 = 27368747340080916343

Für Methode 1 also: 27368747340080916343/143 = 191389841539027387 Rest 2

P.S.: Wie gesagt, dürfte aber dein Taschenrechner mit der Verarbeitung dieser Zahlen Probleme haben (oder zumindest mit der Darstellung).

2
thugox 
Fragesteller
 03.02.2018, 22:39
@Isendrak

okay, danke dir die Antwort reicht mir erstmal.

0
BrauchJzHilfe  03.02.2018, 23:34
@thugox

Dein Taschenrechner hat auch eine Modulo-Funktion. Die könntest du vlt einfach benutzen

0