Check if a given number is factorial of any number
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! = 24Input: 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; } |
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)