Open In App

Check if a given number is factorial of any number

Last Updated : 10 Jul, 2023
Improve
Improve
Like Article
Like
Save
Share
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

Recommended Practice

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;
}


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


Python3




# 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>


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.


Output

Yes

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



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads