# Factorial of a large number using BigInteger in Java

To calculate the factorial of a large number in Java we are going to use BigInteger. For the easy understanding, we have provided an easy example.

BigInteger class in Java is used for mathematical calculations of very large integer values. It belongs to java.math package. Primitive data types like int, long cannot store very big integer values. But there is no theoretical limit for BigInteger on the range of integer values. For example, the factorial of 100 has 158 digits which cannot be stored in any of the primitive data types. This large number can be stored in BigInteger. Therefore, BigInteger is very useful and is used a lot in competitive programming.

## Find factorial of a large Number in Java

In this Java tutorial, we will learn

• declaration of a BigInteger variable
• initialization of BigInteger variables
• mathematical operations
• Factorial problem using BigInteger

### Declaration of BigInteger in Java

`BigInteger d, e;    //Declaration`

### Initialization of BigInteger in Java

```BigInteger a = new BigInteger("123");   //Initialization from string
System.out.println(a);
BigInteger b= BigInteger.valueOf(52643643);  // Initialization through integer or long
System.out.println(b);
BigInteger c= BigInteger.ONE;      //Initialization from BigInteger class constants
System.out.println(c);```

Output:

```123
52643643
1```

### Mathematical operations

There are lots of mathematical functions in BigInteger class. Some functions are

• subtract()
• multiply()
• abs()
• min()

```d = new BigInteger("1");
e = BigInteger.TEN;
d = d.multiply(e);
System.out.println(d);

String str= "57312975971";
long a= 868565523l;
BigInteger b= BigInteger.valueOf(a);
System.out.println(c);```

Output:

```10
58181541494```

### Extraction of value from BigInteger

int x = A.intValue(); // value should be in limit of int x

long y = A.longValue(); // value should be in limit of long y

String z = A.toString();

### Comparison

if (A.compareTo(B) < 0) {}

if (A.equals(B)) {}

We can now solve the problem of factorial using BigInteger.

## Factorial using BigInteger

```import java.math.BigInteger;

public class BI {
public static void main(String[] args) {

System.out.println(factorial(100));
}

public static BigInteger factorial(int N)
{
BigInteger f = new BigInteger("1");

for (int i = 2; i <= N; i++)
f = f.multiply(BigInteger.valueOf(i));

return f;
}
}
```

Output:

`93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000`