pawarashish564's blog

By pawarashish564, 4 years ago, In English

BigInteger

For handling numbers, Java provides built-in types such as int and long. but thes containers are having some limits. After reaching that limit they throw garbage values . The maximum value of long can store is Long.MAX_VALUE which is 9223372036854775807 . For working with number larger than this we can you BigInteger in java . Java provides built-in class called BigInteger to handle very large number.

Actually BigInteger does not have any limit. It will work until you have space in your random access memory for JVM.

isn't it fascinating ? Let's have a look what we can do with BigInteger class with its various built-in methods.

  • Library : import java.math.BigInteger;

  • Input from stdin : BigInteger bi = sc.nextBigInteger();

  • Constants: BigInteger.ZERO BigInteger.ONE BigInteger.TEN

General Arithmetic :

BigInteger.intValue();
BigInteger.add(BigInteger b); // a + b
BigInteger.subtract(BigInteger b); // a - b
BigInteger.multiply(BigInteger b); // a * b
BigInteger.divide(BigInteger b); // a / b
BigInteger.pow(int p); // a ^ p
BigInteger.remainder(BigInteger m); // a % m
BigInteger.mod(BigInteger m); // a % m
BigInteger.modInverse(BigInteger m); // a^-1 % m
BigInteger.modPow(BigInteger p, BigInteger m); // a^p % m
BigInteger.negate(); // -a
BigInteger.not(); // ~a
BigInteger.and(BigInteger b); // a & b
BigInteger.andNot(BigInteger b); // a & ~b
BigInteger.or(BigInteger b); // a | b
BigInteger.xor(BigInteger b);
BigInteger.shiftLeft(int n); // a << n
BigInteger.shiftRight(int n); // a >> n
BigInteger.max(BigInteger b); // max(a, b)
BigInteger.min(BigInteger b); // min(a, b)
BigInteger.toString(int b); // to base convertor

You can also check the large number is prime or not using isProbablePrime() method BigInteger num = new BigInteger("121020010201001039"); System.out.println(num.isProbablePrime(100)); // true Also if you want next prime after giver number you can use nextProabablePrime() method: System.out.println(num.nextProbablePrime()); //121020010201001057

Large Factorials in java Using BigInteger:

Recursion is some what similar to the way we do it using integers or long but difference we used here the methods to perform operations .

  static BigInteger fastFactorial(int b)
  {
    if(BigInteger.ONE.equals(BigInteger.valueOf(b)))
      return BigInteger.ONE;
    else 
      return BigInteger.valueOf(b).multiply(fastFactorial(b-1));
  }
  public static void main(String[] args)
  {
    System.out.println(fastFactorial(100));
  }

//93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

For More information :Click here

  • Vote: I like it
  • +3
  • Vote: I do not like it

| Write comment?