Modulo berechnen

Status
Nicht offen für weitere Antworten.

Jayman

Bekanntes Mitglied
hi,
ich habe eine schwierige Aufgabe zu bewältigen mit einer modulo Rechnung.
es geht um Augabe
x_(n+1) = 16807*x_n mod 2^31 - 1
Dabei soll x_1 maximal werden und die Frage ist wie x_0 dann aussieht.
Wie kann ich das programmieren, damit ich auf die Lösung komme.
die maximale Zahl ist ja 2^31 - 2 (2147483646), also bräuc´hte ich so etwas:
2147483646 = 16807*x mod 2147483647
ist das zu programmieren? finde nur über google englischsprachige Seiten und da ist mein Schulenglisch etwas zu schwach...
 

AmunRa

Gesperrter Benutzer
Wenn du vor hast eine hierfür eine Explizitelösung für diese Folge zufinden muss ich dich glaub ich entäuschen, das einzige was ich mir vorstellen kann ist eine Rekursive- lösung

du stehst eben vor dem Problem , dass:

4 mod 3 = 1 ist
und

3 mod 2 = 1 ebenfalls

Eine Lösung für dein Problem ist z.B

2147483646/16807= 12777,088800699695965443587012786
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
ich habe eine schwierige Aufgabe zu bewältigen mit einer modulo Rechnung
Nö, euklidischer Algo läuft in O(lg(n)) worst case, daher ist das problem eigentlich komplexitätstheoretisch nicht als schwierig zu bewerten ;)

Wenn diese Aufgabe allerdings nicht in einer Zahlentheorie/Kryptographie Vorlesung gestellt wurde, dann ist sie schlicht und einfach nicht machbar. Das läuft alles unter dem Motto Restklassenringe/Euklidischer algorithmus/Bezout Koeffizienten. Einfach so von alleine kommt man da niemals drauf, wenn man das nicht in einer vorlesung mal gehört hat... :bahnhof:

Mit standard-Java API geht's so:
Java:
java.math.BigInteger y=
			(new java.math.BigInteger("16807"))
			.modInverse(new java.math.BigInteger(String.valueOf(Integer.MAX_VALUE)))
			.multiply(new java.math.BigInteger(String.valueOf(Integer.MAX_VALUE-1)))
			.mod(new java.math.BigInteger(String.valueOf(Integer.MAX_VALUE)));
		System.out.println(y);
		System.out.println(y.multiply(new java.math.BigInteger("16807")).mod(new java.math.BigInteger(String.valueOf(Integer.MAX_VALUE))));

Wenn man spaß an der Sache hat, und in etwa weiß was man da tut, kann man das auch selbst schnell basteln:
Java:
//etwas kryptisch hingeschrieben. Im code eh unverständlich. Google "BezoutkoeffizienT"
	public static long modInverse(long a, long p){
		long a1=1, a2=0, q;
		while(p!=0){
			q=a/p;
			a2=a1-q*(a1=a2);
			p=a-q*(a=p);
		}
		return a1;
	}

// modulo rechnen ist fast dasselbe wie %, aber mit kanonischer representantenwahl:
public static long mod(long n, long m){
		return ((n%=m)<0)?n+m:n;
	}
und anwenden:
Java:
long x=mod(modInverse(16807,Integer.MAX_VALUE)*2147483646,Integer.MAX_VALUE);
		System.out.println(x);
		System.out.println(x*16807%Integer.MAX_VALUE);
Ausgabe in beiden Fällen:
Code:
739806647
2147483646

...soo
Hoffentlich hab ich mich jetzt nirgends verrechnet, das wär ja mordspeinlich ;)
 
Zuletzt bearbeitet:

Jayman

Bekanntes Mitglied
danke für so eine ausführleich antwort.
aber leider ist doch... 16807 * 739806647 mod 2147483647 = 0 und nicht 2147483646 :(
 

Jayman

Bekanntes Mitglied
der Prof meinte das sei eine schwierige aber machbare Aufgabe.
ich dachte, dass dieses doch per programmieren zu lösen sei, wie du auch bewiesen hast. denn rechnerisch bin ich nicht daruaf gekommen.
eine Frage zu deinem Code, was wird in modInverse für a,sowie p übergeben? 16807 als a, und 2147483646 als p?
 

0x7F800000

Top Contributor
der Prof meinte das sei eine schwierige aber machbare Aufgabe.
per bruteforce vielleicht :noe:

eine Frage zu deinem Code, was wird in modInverse für a,sowie p übergeben? 16807 als a, und 2147483646 als p?
modInverse(a,p) berechnet das Inverse von a in Z/pZ
Java:
modInverse(16807,Integer.MAX_VALUE)
...in diesem fall eben das Inverse von 16807 im Z/Int.MAX Z
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
E Potenz mit Modulo (über for-Schleife) berechnen Java Basics - Anfänger-Themen 8
R Rechenoperationen mit Modulo Java Basics - Anfänger-Themen 2
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
s.marcii Modulo in der Variable einsetzen - ist das möglich? Java Basics - Anfänger-Themen 2
A Modulo operation Java Basics - Anfänger-Themen 5
A Char und modulo Java Basics - Anfänger-Themen 8
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
krgewb Best Practice Modulo Java Basics - Anfänger-Themen 4
L Rekursion Modulo Java Basics - Anfänger-Themen 7
W Input/Output Modulo Wert speichern und ausgeben lassen Java Basics - Anfänger-Themen 3
S Operatoren Modulo programmieren Java Basics - Anfänger-Themen 10
V Andere Schreibweise für % Modulo Java Basics - Anfänger-Themen 9
N Methoden Modulo Operator Java Basics - Anfänger-Themen 1
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
L Modulo Reste abspeichern und wiedergeben ? Java Basics - Anfänger-Themen 4
Z 10er und 100er Stelle durch Modulo Java Basics - Anfänger-Themen 2
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
J for-schleife + modulo Java Basics - Anfänger-Themen 2
E Problem mit modulo Rechnung Java Basics - Anfänger-Themen 8
S Modulo Operator Java Basics - Anfänger-Themen 8
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
J modulo Java Basics - Anfänger-Themen 13
R Ersatz für Modulo Operator Java Basics - Anfänger-Themen 8
H Typ short: Exponent und Modulo Java Basics - Anfänger-Themen 3
W Modulo rechnen Java Basics - Anfänger-Themen 3
calzone Problem einer Gleichung mit Modulo Java Basics - Anfänger-Themen 5
A Problem mit modulo Java Basics - Anfänger-Themen 8
J statt modulo "if-Anweisung" Java Basics - Anfänger-Themen 9
S Modulo Java Basics - Anfänger-Themen 10
D BigInteger potenzieren und anschließend Modulo Java Basics - Anfänger-Themen 7
G SHA (byte array) per modulo hashen Java Basics - Anfänger-Themen 6
G Modulo Java Basics - Anfänger-Themen 4
J Modulo-Operator rechnet falsch Java Basics - Anfänger-Themen 2
Safado modulo rechnen Java Basics - Anfänger-Themen 5
S Modulo-Operator Java Basics - Anfänger-Themen 5
H Modulo rechnen Java Basics - Anfänger-Themen 17
G Modulo Division funzt nicht Java Basics - Anfänger-Themen 3
G BigInteger und Modulo Java Basics - Anfänger-Themen 3
B Modulo (%) und == Java Basics - Anfänger-Themen 8
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33

Ähnliche Java Themen


Oben