Factorial of a large number

In computers, variables are stored in memory locations. But the size of the memory location is fixed, so when we try to find the factorial of some greater value like 15! or 20! the factorial value exceeds the memory range and returns wrong results.

For calculation of large numbers, we have to use an array to store results. In each element of the array, is storing different digits of the result. But here we cannot multiply some number with the array directly, we have to perform manual multiplication process for all digits of the result array.

Input and Output

A big number: 50
Factorial of given number is:


multiply(x, multiplicand)

Input: The number x, and the large multiplicand as an array.

Output: Result after multiplication.

   carry := 0
   for all digits i of multiplicand, do
      prod := i*x+carry
      i := prod mod 10
      carry := prod / 10

   while carry ≠ 0, do
      insert (carry mod 10) at the end of multiplicand array
      carry := carry/10


Input: The number n.

Output: Find factorial of n.

   define result array.
   insert 1 in the result

   for i := 2 to n, do
      multiply(i, result)

   reverse the result
   return result


using namespace std;

void multiply(int x, vector<int>&multiplicand) {    //multiply multiplicand with x
   int carry = 0;     // Initialize carry to 0
   vector<int>::iterator i;

   for (i=multiplicand.begin(); i!=multiplicand.end(); i++) {   //multiply x with all digit of multiplicand
      int prod = (*i) * x + carry;
      *i = prod % 10;       //put only the last digit of product
      carry  = prod/10;    //add remaining part with carry  

   while (carry) {    //when carry is present
      carry = carry/10;

void factorial(int n) {
   vector<int> result;
   result.push_back(1);    //at first store 1 as result

   for (int i=2; i<=n; i++)
      multiply(i, result);   //multiply numbers 1*2*3*......*n

   cout << "Factorial of given number is: "<<endl;

   reverse(result.begin(), result.end());

   vector<int>::iterator it;    //reverse the order of result

   for(it = result.begin(); it != result.end(); it++)
      cout << *it;

int main() {


Factorial of given number is:
Monica Mona
Monica Mona

Student of life, and a lifelong learner