Skip to content

Commit 1ddd661

Browse files
committed
Use BigInteger to prevent overflow in factorial calculation
1 parent ee34336 commit 1ddd661

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/main/java/com/thealgorithms/maths/Factorial.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.thealgorithms.maths;
22

3+
import java.math.BigInteger;
4+
35
public final class Factorial {
46
private Factorial() {
57
}
@@ -10,13 +12,13 @@ private Factorial() {
1012
* @param n the number
1113
* @return the factorial of {@code n}
1214
*/
13-
public static long factorial(int n) {
15+
public static BigInteger factorial(int n) {
1416
if (n < 0) {
1517
throw new IllegalArgumentException("Input number cannot be negative");
1618
}
17-
long factorial = 1;
19+
BigInteger factorial = BigInteger.ONE;
1820
for (int i = 1; i <= n; ++i) {
19-
factorial *= i;
21+
factorial = factorial.multiply(BigInteger.valueOf(i));
2022
}
2123
return factorial;
2224
}

0 commit comments

Comments
 (0)