# Check if a number is an Unusual Number or not

• Last Updated : 10 Aug, 2021

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 numberint 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 numberbool 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 Codeint 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 numberfrom math import sqrt   # Utility function to find largest# prime factor of a numberdef 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 numberdef 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 Codeif __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 numberfunction 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