Ich versuche, das Verhalten von ModPow und modInverse der Java BigInteger-Klasse zu verstehen, da sie nicht so funktionieren, wie ich es erwarten würde. Vielleicht ist hier fehlt mir etwas einfach, so ein sehr einfaches Stück Code:Java BigInteger modInverse und modPow
BigInteger a = BigInteger.valueOf(2);
BigInteger b = BigInteger.valueOf(5);
BigInteger n1 = new BigInteger(32, 100, new SecureRandom());
System.out.println("n = " + n1);
System.out.println("a^b = " + a.modPow(b, n1) + " ;; (a^b)^(b^-1) = " + a.modPow(b, n1).modPow(b.modInverse(n1), n1));
Der Ausgang ich erhalte, ist:
n = 2664021049 (This is a random prime, can change each run)
a^b = 32 ;; (a^b)^(b^-1) = 4
Jetzt würde ich die 4
dort in der letzten Zeile erwarten be 2
, wie es ist (a^b)^(1/b) = a^(b*(1/b)) = a
Sollte dies auch in einem Modulo-Feld funktionieren?
Was mache ich falsch?
'(a^b)^(1/b) = a^(b * (1/b))' - das gilt nicht für modulare Inverse. – user2357112
Gibt es also einen anderen Weg, der gegeben '(a^b)' und 'b' ich' a' finde? – user7295333