Vergleich großer Basen/Exponenten?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

wie kann ich effizient zwei sehr große Basen/Exponenten miteinander vergleichen?

Beispiel:
343443^534543 und 433453^234323

Da man das mit keinem Taschenrechner berechnen kann, hab ichs mit der schnelle Exponentiation versucht:
Code:
	public static BigInteger berechne(int b1, int e1){
		BigInteger two = BigInteger.valueOf(2);
		BigInteger x = BigInteger.ONE;
		BigInteger e = BigInteger.valueOf(e1);
		BigInteger b = BigInteger.valueOf(b1);
		while(!(e.compareTo(BigInteger.ZERO) == 0)){
			while(e.mod(two).compareTo(BigInteger.ZERO) == 0){
				e = e.divide(two);
				b = b.pow(2);
			}
			e = e.subtract(BigInteger.ONE);
			x = x.multiply(b);
		}
		return x;
	}

Allerdings dauert das immer noch ewig. Muss ich den Wert überhaupt berechnen oder kann ich auch anders feststellen welche Basen/Exponenten die größere Zahl ergeben?
 

Joker

Bekanntes Mitglied
du könntest BigInteger#pow() benutzen:

Code:
 public static int compareBigIntegers(int b1, int e1, int b2, int e2) {		 
		  BigInteger zahl = BigInteger.valueOf(b1).pow(e1);
		  BigInteger zahl2 = BigInteger.valueOf(b2).pow(e2);		  
		  return zahl.compareTo(zahl2);
	  }

aber ob das sehr viel schneller ist wage ich zu bezweifeln. Du könntest das ganze nochmal beschleunigen, indem du die beiden Zahlen parallel berechnest, zumindest bei Prozessoren mit >2 Kernen bringt das dann schon was.

Allerdings kann ich mir keinen Anwendungsfall vorstellen, wo sechsstellige Exponenten benötigt würden ;) das geht sogar weit über das was in der Kryptografie benötigt wird hinaus.
 
S

SlaterB

Gast
grummel, immer diese einfachen Lösungen ;)

faszinierendes Problem, habe dazu eine Weile gesessen, da kann ich meine Idee für eine schnelle Bestimmung noch skizzieren:

Abschätzung/ Rundung nutzen!,
die Zahlen werden ja sicherlich um tausende Dezimalstellen und mehr abweichen, was man nur nicht erkennen kann,
da kann man auch ruhig die Zahlen etwas größer oder kleiner wählen,
wenn man die Zahl x kleiner macht und diese sich dann als größer herausstellt als die vergrößerte Zahl y, dann ist x auch garantiert größer als y

was nützt es, die Zahlen größer oder kleiner zu machen?
wenn man geschickt wählt, bekommt man Zahlen, die in einfache Primfaktoren zerfallen, das hilft bei der weiteren Berechnung

343443 ist größer als 327680 = 2^16 * 5
433453 ist kleiner als 466560 = 2^7 * 3^6 * 5

solche Zahlen drumherum kann man recht gut mit einfachen Mittel berechnen, erstmal lauter Zweien wählen,
wenn die gesuchte Zahl grob erreicht ist , dann verfeinern, z.B. 3 Zweien durch 2 Dreien ersetzen

-------

statt 343443^534543 und 433453^234323 werden nun 327680^534543 und 466560^234323 verglichen,
klingt noch nicht viel einfacher, aber als Primzahlen bedeutet das

2^(16*534543) * 5^534543 vs. 2^(7 *234323) * 3^(6*234323) * 5^234323

nun muss man kräftig kürzen, am einfachsten natürlich Zweien gegen Zweien usw.

aber auch unterschiedliche Ziffern sind zu kürzen, wenn man wieder großzügig rundet:
2^8 sind 256, 3^5 sind 243, also kann man jeweils 8 Zweien gegen 5 Dreien kürzen,
wenn man nur immer in die gleiche Richtung rundet
(immer eine Zahl kleiner machen und die andere größer)

am Ende werden höchstwahrscheinlich auf einer Seite Zigtausend Faktoren überbleiben, das ist dann die größere ;)
und wenn das die Zahl war die immer verkleinert wurde, während die andere immer größer wurde, dann ist der Beweis erbracht,
im Negativfall muss man das ganze nochmal umgekehrt machen: nun immer die andere Zahl vergrößern usw.

falls beide Durchgänge nicht das gleiche Resultat bringen, dann liegen die Zahlen sehr dicht zusammen,
dann hilft das Verfahren nicht, aber das wäre wohl fast ein Lottogewinn ;)
falls man nicht aktiv dichte Paare wie 343443^534543 und 343444^534542 vergleicht
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
B Performance-Vergleich mit C++ Java Basics - Anfänger-Themen 55
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
Zeppi Vergleich von Array-Inhalten Java Basics - Anfänger-Themen 14
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
W Vergleich von DatenPaketen Java Basics - Anfänger-Themen 6
B String vergleich Java Basics - Anfänger-Themen 3
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
V Fließkommazahlen Vergleich Java Basics - Anfänger-Themen 7
J Vergleich Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
T Vergleich und Ausgabe von Zahlen Java Basics - Anfänger-Themen 1
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
J Fehler bei Vergleich auf den grössten Wert Java Basics - Anfänger-Themen 2
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
T Input/Output String-Vergleich schlägt fehl Java Basics - Anfänger-Themen 7
W Konvertierung und Vergleich unterschiedlicher Zeitformate Java Basics - Anfänger-Themen 11
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L PW-Vergleich Java Basics - Anfänger-Themen 5
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
J vergleich von arrays (benötige Hilfe/Denkanstoß) Java Basics - Anfänger-Themen 16
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
T Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich Java Basics - Anfänger-Themen 29
N Methoden Array vergleich funzt nicht Java Basics - Anfänger-Themen 8
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
S Vergleichsmethode zum Objekt-Vergleich mit < und > Java Basics - Anfänger-Themen 4
F Problem bei Vergleich Java Basics - Anfänger-Themen 3
S File vergleich - Junit Java Basics - Anfänger-Themen 6
P String-Vergleich Java Basics - Anfänger-Themen 3
S Multiplikation durch Addition, Subtraktion und Vergleich von Zahlen Java Basics - Anfänger-Themen 14
W Vergleich ob Buchstabe in einem Wort enthalten ist Java Basics - Anfänger-Themen 3
C String Objekte Vergleich je nach Instanzierung unterschiedlich!!?!! Java Basics - Anfänger-Themen 4
R String-Vergleich Java Basics - Anfänger-Themen 15
C Variablen Vergleich funktioniert nicht Java Basics - Anfänger-Themen 11
J Erste Schritte Vergleich der String-Objekte Java Basics - Anfänger-Themen 17
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
A Variablen Vergleich Java Basics - Anfänger-Themen 5
P Erste Schritte vergleich substring und string Java Basics - Anfänger-Themen 4
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Vergleich mit Toleranz Java Basics - Anfänger-Themen 7
B Objekt Vergleich - Unterschiede ausgeben Java Basics - Anfänger-Themen 4
P Vergleich mit Variablen Java Basics - Anfänger-Themen 6
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
K Vergleich von variable und array Java Basics - Anfänger-Themen 9
L vergleich zweier texte Java Basics - Anfänger-Themen 18
H Beim Vergleich/Sortieren mehr als zwei Objekte berücksichtigen Java Basics - Anfänger-Themen 14
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
P Vergleich von Enums Java Basics - Anfänger-Themen 4
S String Vergleich funktioniert nicht Java Basics - Anfänger-Themen 3
A String-Vergleich geht nicht Java Basics - Anfänger-Themen 2
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
F Methoden Vergleich von int Zahlen Java Basics - Anfänger-Themen 16
F Login Passwort-Vergleich Java Basics - Anfänger-Themen 12
N Vergleich per equals Java Basics - Anfänger-Themen 5
Z XML Vergleich Java Basics - Anfänger-Themen 20
S Herunterladen von Dateien mit Vergleich Java Basics - Anfänger-Themen 6
L Problem String-Vergleich Java Basics - Anfänger-Themen 2
E Objekte-Vergleich Java Basics - Anfänger-Themen 6
Y Datentypen String vergleich Java Basics - Anfänger-Themen 3
R Vergleich von Objekten anhand variierender Kriterien Java Basics - Anfänger-Themen 5
K Datentypen Arrays in Java - Adress-Arithmetik im Vergleich zu Listen Java Basics - Anfänger-Themen 4
S equals vergleich Java Basics - Anfänger-Themen 10
A Datentypen instanceof VS Class - Vergleich Java Basics - Anfänger-Themen 4
M Char vergleich zu Int Java Basics - Anfänger-Themen 10
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
algorismi Ausführungszeit Vergleich == true Java Basics - Anfänger-Themen 8
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
T Zwei listen vergleich und selbige löschen Java Basics - Anfänger-Themen 4
T Vergleich mit Typecasts Java Basics - Anfänger-Themen 3
Screen Eine Frage zu moueMove in applets und deren Vergleich Java Basics - Anfänger-Themen 11
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
U Methode Vergleich von 2 Arrays Java Basics - Anfänger-Themen 5
S String Vergleich mit Passwort geht nur bei Zahlen ? Java Basics - Anfänger-Themen 7
G Vergleich klappt nicht Java Basics - Anfänger-Themen 3
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
C DB Vergleich mit Eingabe Java Basics - Anfänger-Themen 5
F Vergleich von Objekten Java Basics - Anfänger-Themen 2
N Vergleich findet nicht statt. Java Basics - Anfänger-Themen 13
M 2 Fragen: Vergleich, aber wie? Was passiert in diesem Teil? Java Basics - Anfänger-Themen 18
A Vergleich schlägt fehl Java Basics - Anfänger-Themen 15
G Vergleich bei MD5-Verschlüsselung Java Basics - Anfänger-Themen 3
R +1 Vergleich Java Basics - Anfänger-Themen 3
E Char vergleich Java Basics - Anfänger-Themen 7
loadbrain Array vergleich mit 2 for schleifen Java Basics - Anfänger-Themen 6
D Vergleich von ListenElementen Java Basics - Anfänger-Themen 2
M Problem bei einem Vergleich Java Basics - Anfänger-Themen 6
G Vergleich Eingabe mit Wert in vorhandenem Array Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben