Simple Factorial program for larger numbers

It is a totally different approach, we are just playing with double.
As we know double has very large value 4.9e-324 to 1.8e+308.
Then we convert the double into an integer array.

Screenshot:

OUTPUT

The Code:

#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;

/*Classic factorial function to find the factorial of a number using recursion method*/
double factorial(int n)
{
if(n==1)
return 1;
else
return (factorial(n-1)*n);
}

int main()
{
int n;
cout<<"factorial of: ";
cin>>n;

double r = factorial(n);
double s = r;
int i=0;
/*to find the number of digits of the answer*/
for(i=0; r>=1; i++)
{
r /= 10;
}
cout<<"number of digits: "<<i<<endl;
/*creating and dynamically allocated array*/
int *a = new int[370];
double t,u;
int k;
int l=0;
/*type casting digit by digit of the answer and
symultaneously storing into the array*/
for(int j=i-1; j>0; j--)
{
t = s/pow(10,j);
k = (double) t;
a[l] = k;
s = s-k*pow(10,j);
l++;
}
/*Print the array*/
cout<<"Answer: ";
for(int m=0; m<i; m++)
{
cout<<a[m];
}
cout<<endl;
return 0;
}

This is an approximated program, boundary condition is 1-170.

Bikash Panda
Catch Me On

Bikash Panda

Blogger / Embedded System Developer at WGLabz
A techie, tinkerer and tech lover, who loves to blog and feels everyone can learn tech provided they have the right attitude towards learning and passion. By profession, I am an IOT developer working in Smart Home/ Smart Grid domain.
Bikash Panda
Catch Me On

Latest posts by Bikash Panda (see all)

Related posts