All about Factorial(!)

In mathematics,the factorial of any positive number N is the product of the positive integers less than or equal to N.It is denoted by ‘N!’.

Example-

5!= 5*4*3*2*1 =120
Also,0!=1.

In C/C++,no data type can store the value of factorial of a number greater than 20.To find the factorial of greater numbers easily,JAVA/Python can be used.

JAVA Code-

This code uses BigIntegers.

import java.io.*;
import java.math.BigInteger;
public class Main
{
 public static void main(String[] args) throws IOException
{
String n;
BufferedReader d= new BufferedReader(new InputStreamReader(System.in));
n=d.readLine();
int y=Integer.parseInt(n);
BigInteger x=new BigInteger(n); //converting string to biginteger
for(int j=y-1;j>=1;j--)
{
      String str= Integer.toString(j);
   x=x.multiply(new BigInteger(str));
}
System.out.println(x);
}
}

Length of the factorial-

The number of digits in N! is approximately:-
[(log(2*pie*n)/2)+n*(log(n)-1))/log(10)]+1;

Stirling’s approximation-

N! is approximately equal to {sqrt(2*pie*n)}*{(n/e)^n}.

To find the power of a prime factor of N! –

Let the prime factor be X.Then,the power of X will be :-

[N/X]+[N/(X^2)]+[N/(X^3)]+….. where [.] denotes the greatest integer function.

For example-

Power of 2 in 5! will be-

[5/2]+[5/4]+[5/8]+[5/16]+…..
=> 2+1+0+0+….
which is equal to 3.

Also,5!=2^3 * 3^1 * 5^1

To find the number of zeroes at the end of N!-

Find the power of 2 and 5 in N!(Since,10=5*2).
Let it be ‘v’ and ‘s’ respectively.
if(v<=s),then number of zeroes at the end is 'v',else,'s'.

Code-

//initialization
     s=0;
     v=0;

     p=N; //copying value of N to another variable
//Finding power of 5
    while(N>0)
    {
           q=N/5;
           s=s+q;
           N=q;
    }
//Finding power of 2                  
    while(p>0)
    {
              w=p/2;
              v=v+w;
              p=w;
    }

    if(v>=s)    printf("%d\n",s);
    else        printf("%d\n",v);
}

Last Non-zero digit of the factorial-

Lets say D(N) denotes the last non zero digit of factorial, then the algo says:-
If tens digit of N is odd,D(N)=4*D[N/5]*D(Unit digit of N)
If tens digit of N is even,D(N)=6*D[N/5]*D(Unit digit of N)
where [N/5] is greatest Integer Function.

Example-

D(26)=6*D[26/5]*D(6)=6*D(5)*D(6)=6*2*2=4
[D(5) means last non zero digit of 5!=120 which is 2, same for D(6)]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

* Copy This Password *

* Type Or Paste Password Here *

41,085 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>