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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 grater 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  ?>

Output:

YES

Time complexity:
Auxiliary space:

My Personal Notes arrow_drop_up

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.