Open In App

Check if a given number is factorial of any number

Last Updated : 12 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Given a number n, the task is to determine whether n can be a factorial of some number x.
Examples: 

Input: N = 24
Output: Yes
Explanation: 4! = 24

Input: N = 25
Output: No

Approach: 

For a number to be a factorial of any number it must be divisible by all the numbers from 1 to that number. So in this approach

We keep on dividing the number if it is completely divisible till it is no longer divisible.

Then we check the final number of n, if it is 1 we return true else we return false.

Below is the implementation of the above approach:

C++
// C++ implementation for 
// the above approach
#include <bits/stdc++.h>
using namespace std;

// Function to check if 
// the given number is a 
// factorial of any number
bool isFactorial(int n)
{
  for (int i = 1;; i++) {
    if (n % i == 0) {
      n /= i;
    }
    else {
      break;
    }
  }

  if (n == 1) {
    return true;
  }
  else {
    return false;
  }
}

// Driver Code
int main()
{
  int n = 24;

  bool ans = isFactorial(n);
  if (ans == 1) {
    cout << "Yes\n";
  }
  else {
    cout << "No\n";
  }

  return 0;
}
C
// C implementation for 
// the above approach
#include <stdio.h>
#include<stdbool.h> 

// Function to check if 
// the given number is a 
// factorial of any number
bool isFactorial(int n)
{
  for (int i = 1;; i++) {
    if (n % i == 0) {
      n /= i;
    }
    else {
      break;
    }
  }
 
  if (n == 1) {
    return true;
  }
  else {
    return false;
  }
}

// Driver code
int main()
{
    int n = 24;
 
  bool ans = isFactorial(n);
  if (ans == 1) {
    printf("Yes\n");
  }
  else {
    printf("No\n");
  }
}

// This code is contributed by allwink45.
Java
// Java implementation for the above approach 
class GFG
{

    // Function to check if the given number 
    // is a factorial of any number 
    static boolean isFactorial(int n) 
    { 
        for (int i = 1;; i++) 
        { 
            if (n % i == 0) 
            { 
                n /= i; 
            } 
            else 
            { 
                break; 
            } 
        } 
    
        if (n == 1) 
        { 
            return true; 
        } 
        else 
        { 
            return false; 
        } 
    } 
    
    // Driver Code 
    public static void main (String[] args) 
    { 
        int n = 24; 
        boolean ans = isFactorial(n); 
        
        if (ans == true) 
        { 
            System.out.println("Yes"); 
        } 
        else
        { 
            System.out.println("No"); 
        } 
    } 
}

// This code is contributed by AnkitRai01
Python
# Python3 implementation of the approach 

# Function to check if 
# the given number is a 
# factorial of any number 
def isFactorial(n) :
    i = 1
    while(True) :
        
        if (n % i == 0) :
            n //= i
            
        else :
            break 
            
        i += 1

    if (n == 1) :
        return True 
    
    else :
        return False 

# Driver Code 
if __name__ == "__main__" : 
    n = 24
    ans = isFactorial(n)
    
    if (ans == 1) :
        print("Yes") 

    else :
        print("No")

# This code is contributed by kanugargng
C#
// C# implementation for the above approach
using System;
    
class GFG
{

    // Function to check if the given number 
    // is a factorial of any number 
    static Boolean isFactorial(int n) 
    { 
        for (int i = 1;; i++) 
        { 
            if (n % i == 0) 
            { 
                n /= i; 
            } 
            else
            { 
                break; 
            } 
        } 
    
        if (n == 1) 
        { 
            return true; 
        } 
        else
        { 
            return false; 
        } 
    } 
    
    // Driver Code 
    public static void Main (String[] args) 
    { 
        int n = 24; 
        Boolean ans = isFactorial(n); 
        
        if (ans == true) 
        { 
            Console.WriteLine("Yes"); 
        } 
        else
        { 
            Console.WriteLine("No"); 
        } 
    } 
}

// This code is contributed by 29AjayKumar
JavaScript
<script>

// Javascript implementation for
// the above approach

// Function to check if
// the given number is a
// factorial of any number
function isFactorial(n)
{
    for (var i = 1;; i++)
    {
        if (n % i == 0) 
        {
            n = parseInt(n/i);
        }
        else 
        {
            break;
        }
    }

    if (n == 1) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}

// Driver Code
var n = 24;
var ans = isFactorial(n);
if (ans == 1)
{
    document.write("Yes");
}
else
{
    document.write("No");
}

// This code is contributed by noob2000.
</script>

Output
Yes

Time Complexity: O(log10n)
Auxiliary Space: O(1)


Article Tags :
Practice Tags :

Similar Reads