Last non-zero digit in factorial in Java
Last non-zero digit in factorial in Java
Here, in this page we will discuss the program to find the Last non-zero digit in factorial in Java programming Language. We will discuss various methods to solve the given problem.
Method Discussed :
- Method 1 : Naive Approach
- Method 2 : Efficient Approach
Let’s discuss them one by one in brief,
Method 1:
- Run a loop till i<j, inside loop check if (arr[i]==arr[j]), then increase the value of i by 1 and decrease the value of j by 1.
- Else if (arr[i]>arr[j]), then set arr[j-1] = arr[j-1]+arr[j] and decrease the value of j and increase the value of count by 1.
- Else set, arr[i+1] = arr[i]+arr[i+1] and increase the value of i and count by 1.
- After the traversal print the value of count.
Time and Space Complexity :
- Time-Complexity : O(n)
- Space-Complexity : O(1)
Method 1 : Code in Java
Run
class Main {
// Method to find factorial of the given number
static int factorial(int n)
{
if(n==0 || n==1)
return 1;
return n*factorial(n-1);
}
// Driver method
public static void main(String[] args)
{
int num = 5;
int fact = factorial(num);
int res;
while(fact%10==0){
fact /=10;
}
System.out.println(fact%10);
}
}
Output :
2
Method 2:
- Now divide each array element into its shortest divisible form by 2 and decrease count of such occurrences. This way we are not considering the multiplication of 2 and a 5 in our multiplication(number of 2’s present in multiplication result upto n is always more than number 0f 5’s).
- Multiply each number(after removing pairs of 2’s and 5’s) now and store just last digit by taking remainder by 10.
- Now call recursively for smaller numbers by (currentNumber – 1) as parameter.
Method 2 : Code in Java
Run
import java.io.*;
class Main {
public static void callMeFactorialLastDigit(int n, int[] result, int sumOf5)
{
int number = n;
if (number == 1)
return;
while (number % 5 == 0) {
number /= 5;
sumOf5++;
}
while (sumOf5 != 0 && (number & 1) == 0) {
number >>= 1;
sumOf5--;
}
result[0] = (result[0] * (number % 10)) % 10;
callMeFactorialLastDigit(n - 1, result, sumOf5);
}
public static int lastNon0Digit(int n)
{
int[] result = { 1 };
callMeFactorialLastDigit(n, result, 0);
return result[0];
}
public static void main(String[] args)
{
System.out.println(lastNon0Digit(7));
}
}
Output :
4
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Login/Signup to comment