In this Java program, you will learn to calculate Factorial of large numbers. Factorial of 100 has 158 digits. It is not possible to store these many digits even if we use long long int.
Example:
1 2 3 4 5 6 |
Input : 100 Output : 933262154439441526816992388562667004- 907159682643816214685929638952175999- 932299156089414639761565182862536979- 208272237582511852109168640000000000- 00000000000000 |
Following is a simple solution where we use an array to store individual digits of the result. The idea is to use basic mathematics for multiplication.
Example: Program to Calculate Factorial of Large Numbers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import java.util.Scanner; public class Main { // This function finds factorial of // large numbers and prints them static void factorial(int n) { int res[] = new int[500]; // Initialize result res[0] = 1; int res_size = 1; // Apply simple factorial formula // n! = 1 * 2 * 3 * 4...*n for (int x = 2; x <= n; x++) res_size = multiply(x, res, res_size); System.out.println("Factorial of given number is "); for (int i = res_size - 1; i >= 0; i--) System.out.print(res[i]); } // This function multiplies x with the number // represented by res[]. res_size is size of res[] or // number of digits in the number represented by res[]. // This function uses simple school mathematics for // multiplication. This function may value of res_size // and returns the new value of res_size static int multiply(int x, int res[], int res_size) { int carry = 0; // Initialize carry // One by one multiply n with individual // digits of res[] for (int i = 0; i < res_size; i++) { int prod = res[i] * x + carry; res[i] = prod % 10; // Store last digit of // 'prod' in res[] carry = prod/10; // Put rest in carry } // Put carry in res and increase result size while (carry!=0) { res[res_size] = carry % 10; carry = carry / 10; res_size++; } return res_size; } public static void main(String args[]) { int num; Scanner scan = new Scanner(System.in); System.out.println("Enter any large number:"); num = scan.nextInt(); factorial(num); } } |
1 2 3 4 5 6 7 |
Enter any large number: 100 Factorial of given number is 93326215443944152681699238856266700490715968264381621468592963895217599 99322991560894146397615651828625369792082722375825118521091686400000000 0000000000000000 |