Open In App

Check if a number is an Unusual Number or not

Last Updated : 10 Aug, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

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 <bits/stdc++.h>
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

<?php
// PHP Program to check Unusual number
   
// Utility function to find largest
// prime factor of a number
function 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 = 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

<script>
 
// javascript Program to check Unusual number
    
  
    // Utility function to find largest
    // prime factor of a number
     
    function largestPrimeFactor( n)
    {
        // Initialize the maximum prime factor
        // variable with the lowest one
         
        var 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 (var 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
     
    function  checkUnusual(n)
    {
        // Get the largest Prime Factor
        // of the number
         
        var 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
 
        var n = 14;
    
        if (checkUnusual(n)) {
            document.write("YES");
        }
        else {
            document.write("NO");
        }
         
 </script>

                    

Output: 
YES

Time complexity: \text{O}(\sqrt{n})
Auxiliary space: \text{O}(1)
 


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

Similar Reads