# Java.math.BigInteger.modInverse() method in Java

• Last Updated : 28 Aug, 2019

Prerequisite : BigInteger Basics

The modPow() method returns modular multiplicative inverse of this, mod m. This method throws an ArithmeticException if m <= 0 or this has no multiplicative inverse mod m (i.e., gcd(this, m) != 1).

Syntax:

`public BigInteger modInverse(BigInteger m)`

Parameters: m – the modulus.

Return Value: This method returns a BigInteger object whose value is ((this)^(-1) mod m).

Exception:

• ArithmeticException – m <= 0, or this BigInteger has no multiplicative inverse mod m (that is, this BigInteger is not relatively prime to m).

Below programs illustrate the BigInteger.modInverse() method:

Program 1 :

 `import` `java.math.*;``import` `java.util.Scanner;`` ` `public` `class` `GFG {`` ` `    ``public` `static` `void` `main(String[] args)``    ``{`` ` `        ``Scanner sc = ``new` `Scanner(System.in);`` ` `        ``// create 2 BigInteger objects``        ``BigInteger biginteger1, biginteger2, result;`` ` `        ``// Initialize all BigInteger Objects``        ``biginteger1 = ``new` `BigInteger(``"8"``);``        ``biginteger2 = ``new` `BigInteger(``"21"``);`` ` `        ``// perform modInverse operation on biginteger1 using biginteger2.``        ``result = biginteger1.modInverse(biginteger2);`` ` `        ``String expression = biginteger1 + ``" ^ -1 % "``                            ``+ biginteger2 + ``" = "` `+ result;`` ` `        ``// print result value``        ``System.out.println(expression);``    ``}``}`

Output:

```8 ^ -1 % 21 = 8
```

Program 2 :

 `import` `java.math.*;``import` `java.util.Scanner;`` ` `public` `class` `GFG {`` ` `    ``public` `static` `void` `main(String[] args)``    ``{`` ` `        ``Scanner sc = ``new` `Scanner(System.in);`` ` `        ``// create 2 BigInteger objects``        ``BigInteger biginteger1, biginteger2, result;`` ` `        ``// Initialize all BigInteger Objects``        ``biginteger1 = ``new` `BigInteger(``88882``);``        ``biginteger2 = ``new` `BigInteger(``22224``);`` ` `        ``// perform modInverse operation on biginteger1 using biginteger2.``        ``result = biginteger1.modInverse(biginteger2);`` ` `        ``String expression = biginteger1 + ``" ^ -1 % "``                            ``+ biginteger2 + ``" = "` `+ result;`` ` `        ``// print result value``        ``System.out.println(expression);``    ``}``}`

Output :

```Exception in thread "main" java.lang.ArithmeticException: BigInteger not invertible.
at java.math.MutableBigInteger.modInverse(Unknown Source)
at java.math.MutableBigInteger.mutableModInverse(Unknown Source)
at java.math.BigInteger.modInverse(Unknown Source)
at BigInteger.GFG2.main(GFG2.java:23)
```

My Personal Notes arrow_drop_up