BigInteger

ManuJo

Mitglied
Hey Leute,

ich wollte mal fragen, ob es eine Möglichkeit gibt, ein Potenz zu berechnen, wobei sowohl Basis als auch Exponent ein BigInteger-Wert ist.
Ich habe das BigInteger.Pow() ausprobiert, jedoch verlangt es als Exponent ein Integer-Wert.
 

httpdigest

Top Contributor
Nein, gibt es nicht. Wenn du wirklich einen BigInteger mit solch einem großen Exponenten potenzieren willst, dass der Exponent nicht mehr in einen int passt, dann gibt es sowieso nicht genug Atome im Universum, um die ints in dem int[] Array des BigIntegers zu halten, um das Ergebnis zu repräsentieren.
 

httpdigest

Top Contributor
Nein, this.modPow(exponent, moduloBasis)

Es berechnet die Potenz modulo der Basis 'm'.
Das heißt, wenn du das tatsächliche Ergebnis der Potenzierung haben willst, dann muss deine moduloBasis mindestens so groß sein wie das Ergebnis, das du erwartest.
Oder mit anderen Worten: Es hilft dir nicht und du kannst pow(int) verwenden, weil wie gesagt: Wenn dein Exponent sowieso größer als MAX_INT ist, dann kann kein Rechner der Welt das Ergebnis speichern.
Mal ganz ehrlich: Wird dein Exponent größer als MAX_INT sein? Falls nicht, dann mach doch einfach pow(meinExponent.intValue()).
 

ManuJo

Mitglied
Habe noch eine letzte Frage. Wie kann ich das BigInteger.Pow() importieren? Bei mir denkt das Programm, es handle sich um eine Methode.
 

httpdigest

Top Contributor
Es ist ja auch eine Methode. Es ist eine Instanzmethode auf einem BigInteger.
Du benutzt es in etwa so:
Java:
BigInteger basis = ... // <- ein BigInteger als Basis, woher auch immer
BigInteger ergebnis = basis.pow(12345); // <- basis ^ 12345
 

Ähnliche Java Themen

Neue Themen


Oben