 GFG App
Open App Browser
Continue

# Check if a number is an Unusual Number or not

Given a positive integer N. The task is to check if N is an unusual number or not. Print ‘YES’ if M is an unusual number else print ‘NO’.
Unusual number : In Mathematics, an unusual number is a natural number whose greatest prime factor is strictly greater than square root of n.
The first few unusual numbers are –

2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 20, 21, 22, 23, 26, 28, 29, 31, 33, 34, 35, 37, 38, 39, 41, 42, 43, 44, 46, 47, 51

Examples

Input : N = 14
Output : YES
Explanation : 7 is largest prime factor of 14
and 7 is strictly greater than square root of 14

Input : N = 16
Output : NO
Explanation : 2 is largest prime factor of 16
and 2 is less than square root of 16 ( i.e 4 ).

Approach :

1. Find the largest prime factor of the given number N. To find the largest prime factor of N refer this .
2. Check if the largest prime factor of N is strictly greater than square root of N.
3. If ‘YES’ then N is an Unusual number otherwise Not.

Below is the implementation of the above approach:

## C++

 // C++ Program to check Unusual number  #include  using namespace std;      // Utility function to find largest  // prime factor of a number  int largestPrimeFactor(int n)  {      // Initialize the maximum prime factor      // variable with the lowest one      int max = -1;          // Print the number of 2s that divide n      while (n % 2 == 0) {          max = 2;          n >>= 1; // equivalent to n /= 2      }          // n must be odd at this point, thus skip      // the even numbers and iterate only for      // odd integers      for (int i = 3; i <= sqrt(n); i += 2) {          while (n % i == 0) {              max = i;              n = n / i;          }      }          // This condition is to handle the case      // when n is a prime number greater than 2      if (n > 2)          max = n;          return max;  }      // Function to check Unusual number  bool checkUnusual(int n)  {      // Get the largest Prime Factor      // of the number      int factor = largestPrimeFactor(n);          // Check if largest prime factor      // is greater than sqrt(n)      if (factor > sqrt(n)) {          return true;      }      else {          return false;      }  }      // Driver Code  int main()  {      int n = 14;          if (checkUnusual(n)) {          cout << "YES"              << "\n";      }      else {          cout << "NO"              << "\n";      }          return 0;  }

## Java

 // Java Program to check Unusual number    class GFG {        // Utility function to find largest     // prime factor of a number     static int largestPrimeFactor(int n)     {         // Initialize the maximum prime factor         // variable with the lowest one         int max = -1;            // Print the number of 2s that divide n         while (n % 2 == 0) {             max = 2;             n >>= 1; // equivalent to n /= 2         }            // n must be odd at this point, thus skip         // the even numbers and iterate only for         // odd integers         for (int i = 3; i <= Math.sqrt(n); i += 2) {             while (n % i == 0) {                 max = i;                 n = n / i;             }         }            // This condition is to handle the case         // when n is a prime number greater than 2         if (n > 2)             max = n;            return max;     }        // Function to check Unusual number     static boolean checkUnusual(int n)     {         // Get the largest Prime Factor         // of the number         int factor = largestPrimeFactor(n);            // Check if largest prime factor         // is greater than sqrt(n)         if (factor > Math.sqrt(n)) {             return true;         }         else {             return false;         }     }        // Driver Code     public static void main(String[] args)     {         int n = 14;            if (checkUnusual(n)) {             System.out.println("YES");         }         else {             System.out.println("NO");         }     } }

## Python3

 # Python Program to check Unusual number  from math import sqrt     # Utility function to find largest  # prime factor of a number  def largestPrimeFactor(n):       # Initialize the maximum prime factor      # variable with the lowest one      max = -1         # Print the number of 2s that divide n      while n % 2 == 0:         max = 2;          n >>= 1; # equivalent to n /= 2          # n must be odd at this point, thus skip      # the even numbers and iterate only for      # odd integers      for i in range(3,int(sqrt(n))+1,2):          while n % i == 0:             max = i;              n = n / i;          # This condition is to handle the case      # when n is a prime number greater than 2      if n > 2:         max = n         return max     # Function to check Unusual number  def checkUnusual(n):     # Get the largest Prime Factor      # of the number      factor = largestPrimeFactor(n)          # Check if largest prime factor      # is greater than sqrt(n)      if factor > sqrt(n):          return True     else :         return False     # Driver Code  if __name__ == '__main__':           n = 14         if checkUnusual(n):          print("YES")     else:         print("NO")   # This code is contributed  # by Harshit Saini

## C#

 // C# Program to check Unusual number    using System; class GFG {        // Utility function to find largest     // prime factor of a number     static int largestPrimeFactor(int n)     {         // Initialize the maximum prime factor         // variable with the lowest one         int max = -1;            // Print the number of 2s that divide n         while (n % 2 == 0) {             max = 2;             n >>= 1; // equivalent to n /= 2         }            // n must be odd at this point, thus skip         // the even numbers and iterate only for         // odd integers         for (int i = 3; i <= Math.Sqrt(n); i += 2) {             while (n % i == 0) {                 max = i;                 n = n / i;             }         }            // This condition is to handle the case         // when n is a prime number greater than 2         if (n > 2)             max = n;            return max;     }        // Function to check Unusual number     static bool checkUnusual(int n)     {         // Get the largest Prime Factor         // of the number         int factor = largestPrimeFactor(n);            // Check if largest prime factor         // is greater than sqrt(n)         if (factor > Math.Sqrt(n)) {             return true;         }         else {             return false;         }     }        // Driver Code     public static void Main()     {         int n = 14;            if (checkUnusual(n)) {             Console.WriteLine("YES");         }         else {             Console.WriteLine("NO");         }     } }

## PHP

 >= 1; // equivalent to n /= 2      }          // n must be odd at this point, thus skip      // the even numbers and iterate only for      // odd integers      for ($i = 3; $i <= sqrt($n); $i += 2) {          while ($n % $i == 0) {              $max = $i;              $n = $n / $i;   }   }     // This condition is to handle the case   // when n is a prime number greater than 2   if ($n > 2)          $max = $n;          return $max;  }    // Function to check Unusual number  function checkUnusual($n)  {      // Get the largest Prime Factor      // of the number      $factor = largestPrimeFactor($n);          // Check if largest prime factor     // is greater than sqrt(n)      if ($factor > sqrt($n)) {          return true;      }      else {          return false;      }  }      // Driver Code   $n = 14;  if (checkUnusual($n)) {      echo "YES"."\n";  }  else {      echo "NO"."\n";  }  // This code is contributed  // by Harshit Saini  ?>

## Javascript

 

Output:

YES

Time complexity: Auxiliary space: My Personal Notes arrow_drop_up