modPow 및 Java BigInteger 클래스의 modInverse는 예상대로 작동하지 않으므로이 동작을 이해하려고합니다.Java BigInteger modInverse 및 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));
내가 얻을 출력은 다음과 같습니다 : 이제
n = 2664021049 (This is a random prime, can change each run)
a^b = 32 ;; (a^b)^(b^-1) = 4
, 나는 마지막 줄에 거기 4
을 기대 어쩌면 내가 간단하게 뭔가를 놓친 거지, 그래서 여기에 코드의 매우 간단한 조각이다 2
, 그대로 (a^b)^(1/b) = a^(b*(1/b)) = a
이 또한 모듈로 필드에서 작동해야합니까?
내가 뭘 잘못하고 있니?
모듈러 반전에 대해 보유하지 않는'(a^b)^(1/b) = a^(b * (1/b))' – user2357112
'(a^b)'와'b'가 'a'를 찾으면 다른 방법이 있습니까? – user7295333