Check if count of divisors is even or odd - GeeksforGeeks

20 Jan, 2022
Given a number “n”, find its total number of divisors are even or odd.Examples :  
Input  : n = 10      
Output : Even

Input:  n = 100
Output: Odd

Input:  n = 125
Output: Even
 
A naive approach would be to find all the divisors and then see if the total number of divisors is even or odd.Time complexity for such a solution would be O(sqrt(n))  
C++
C
Java
Python3
C#
PHP
Javascript
// Naive Solution to find// if count of divisors// is even or odd#include <bits/stdc++.h>using namespace std; // Function to count// the divisorsvoid countDivisors(int n){    // Initialize count    // of divisors    int count = 0;     // Note that this    // loop runs till    // square root    for (int i = 1; i <= sqrt(n) + 1; i++)    {        if (n % i == 0)             // If divisors are            // equal increment            // count by one            // Otherwise increment            // count by 2            count += (n / i == i) ? 1 : 2;    }     if (count % 2 == 0)        cout << "Even" << endl;    else        cout << "Odd" << endl;} // Driver Codeint main(){    cout << "The count of divisor: ";    countDivisors(10);    return 0;} // This code is Contributed by SHUBHAMSINGH10
// Naive Solution to find// if count of divisors// is even or odd #include <math.h>#include <stdio.h> // Function to count// the divisorsvoid countDivisors(int n){    // Initialize count    // of divisors    int count = 0;     // Note that this    // loop runs till    // square root    for (int i = 1; i <= sqrt(n) + 1; i++)    {        if (n % i == 0)             // If divisors are            // equal increment            // count by one            // Otherwise increment            // count by 2            count += (n / i == i) ? 1 : 2;    }     if (count % 2 == 0)        printf("Even\n");     else        printf("Odd\n");} // Driver Codeint main(){    printf("The count of divisor: ");    countDivisors(10);    return 0;}
// Naive Solution to find if count// of divisors is even or odd import java.io.*;import java.math.*; class GFG{     // Function to count    // the divisors    static void countDivisors(int n)    {        // Initialize count        // of divisors        int count = 0;         // Note that this        // loop runs till        // square root        for (int i = 1; i <= Math.sqrt(n) + 1; i++)        {            if (n % i == 0)                 // If divisors are                // equal increment                // count by one                // Otherwise increment                // count by 2                count += (n / i == i) ? 1 : 2;        }         if (count % 2 == 0)            System.out.println("Even");         else            System.out.println("Odd");    }     // Driver Code    public static void main(String args[])    {        System.out.print("The count of divisor: ");        countDivisors(10);    }}// This code is contributed by Nikita Tiwari
# Naive Solution to find if count # of divisors is even or oddimport math # Function to count# the divisorsdef countDivisors(n) :         # Initialize count    # of divisors    count = 0     # Note that this loop    # runs till square    # root    for i in range(1, (int)(math.sqrt(n)) + 2) :        if (n % i == 0) :                         # If divisors are            # equal, increment            # count by one            # Otherwise increment            # count by 2            if( n // i == i) :                count = count + 1            else :                count = count + 2     if (count % 2 == 0) :        print("Even")    else :        print("Odd")  # Driver Codeprint("The count of divisor: ")countDivisors(10) # This code is contributed by Nikita Tiwari
// C# program using Naive// Solution to find if// count of divisors// is even or oddusing System; class GFG {     // Function to count    // the divisors    static void countDivisors(int n)    {        // Initialize count        // of divisors        int count = 0;         // Note that this        // loop runs till        // square root        for (int i = 1; i <= Math.Sqrt(n)                                 + 1;             i++) {            if (n % i == 0)                 // If divisors are                // equal increment                // count by one                // Otherwise increment                // count by 2                count += (n / i == i) ? 1 : 2;        }         if (count % 2 == 0)            Console.Write("Even");         else            Console.Write("Odd");    }     // Driver code    public static void Main()    {        Console.Write("The count of divisor: ");        countDivisors(10);    }} // This code is contributed by Sam007.
<?php// Naive Solution to// find if count of// divisors is even// or odd // Function to count// the divisorsfunction countDivisors($n){         // Initialize count    // of divisors    $count = 0;     // Note that this    // loop runs till    // square root    for ($i = 1; $i <= sqrt($n) + 1; $i++)    {        if ($n % $i == 0)             // If divisors are            // equal increment            // count by one            // Otherwise increment            // count by 2            $count += ($n / $i == $i)? 1 : 2;    }     if ($count % 2 == 0)        echo "Even\n";             else        echo "Odd\n";}     // Driver Code    echo "The count of divisor: ";    countDivisors(10);     // This code is contributed by ajit.?>
<script> // Naive Solution to find// if count of divisors// is even or odd // Function to count// the divisorsfunction countDivisors(n){    // Initialize count    // of divisors    let count = 0;     // Note that this    // loop runs till    // square root    for (let i = 1; i <= Math.sqrt(n) + 1; i++)    {        if (n % i == 0)             // If divisors are            // equal increment            // count by one            // Otherwise increment            // count by 2            count += (Math.floor(n / i) == i) ? 1 : 2;    }     if (count % 2 == 0)        document.write("Even" + "<br>");    else        document.write("Odd" + "<br>");} // Driver Code    document.write("The count of divisor: ");    countDivisors(10); // This code is contributed by Surbhi Tyagi. </script>
Output : 
The count of divisor: Even 
Efficient Solution: We can observe that the number of divisors is odd only in case of perfect squares. Hence the best solution would be to check if the given number is perfect square or not. If it’s a perfect square, then the number of divisors would be odd, else it’d be even.Below is the implementation of above idea : 
C++
Java
Python3
C#
PHP
Javascript
// C++ program for// Efficient Solution to find// if count of divisors is// even or odd#include <bits/stdc++.h>using namespace std; // Function to find if count// of divisors is even or// oddvoid countDivisors(int n){    int root_n = sqrt(n);     // If n is a perfect square,    // then it has odd divisors    if (root_n * root_n == n)        printf("Odd\n");    else        printf("Even\n");} // Driver Codeint main(){    cout << "The count of divisors"         << " of 10 is: ";     countDivisors(14);    return 0;}
// Java program for Efficient// Solution to find if count of// divisors is even or oddimport java.io.*;import java.math.*; class GFG{     // Function to find if count    // of divisors is even or    // odd    static void countDivisors(int n)    {        int root_n = (int)(Math.sqrt(n));         // If n is a perfect square,        // then, it has odd divisors        if (root_n * root_n == n)            System.out.println("Odd");         else            System.out.println("Even");    }     // Driver code    public static void main(String args[])        throws IOException    {        System.out.print("The count of" +                    "divisors of 10 is: ");         countDivisors(10);    }} // This code is contributed by Nikita Tiwari
# Python program for# Efficient Solution to find# find if count of divisors# is even or oddimport math def NumOfDivisor(n):    if n < 1:        return    root_n = int(math.sqrt(n))         # If n is a perfect square,    # then it has odd divisors    if root_n**2 == n:        print('Odd')    else:        print('Even')         # Driver code    if __name__ == '__main__':    print("The count of divisor is:")    NumOfDivisor(14)     # This code is contributed by Yt R   
// C# program for efficient// solution to find of// count of divisors is// even or oddusing System; class GFG {     // Function to find if    // count of divisors    // is even or odd    static void countDivisors(int n)    {        int root_n = (int)(Math.Sqrt(n));         // If n is a perfect square,        // then, it has odd divisors        if (root_n * root_n == n)            Console.WriteLine("Odd");         else            Console.WriteLine("Even");    }     // Driver code    public static void Main()    {        Console.Write("The count of divisors : ");         countDivisors(10);    }} // This code is contributed by Sam007.
<?php// Php program for Efficient// Solution to find if count of// divisors is even or odd // Function to find if count// of divisors is even or// odd function countDivisors($n){    $root_n = sqrt($n);     // If n is a perfect square,    // then it has odd divisors    if ($root_n * $root_n == $n)        echo "Odd\n";    else        echo "Even\n";} // Driver Codeecho "The count of divisors of 10 is: "; countDivisors(10); // This code is contributed by ajit?>
<script> // JavaScript program for// Efficient Solution to find// if count of divisors// is even or odd // Function to count// the divisorsfunction countDivisors(n){    // Store square root of n    let root_n = Math.sqrt(n);     // If n is a perfect square,    // then it has odd divisors    if (root_n * root_n == n)        document.write("Odd" + "<br>");    else        document.write("Even" + "<br>");     } // Driver Code    document.write("The count of divisor: ");    countDivisors(10); // This code is contributed by Surbhi Tyagi. </script>
Output :  
The count of divisor: Even
 
This article is contributed by Ashutosh Kumar. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 
Sam007
jit_t
SHUBHAMSINGH10
surbhityagi15
sudhanshugupta2019a
hridyakrishnar127
amartyaghoshgfg
divisors
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Print all possible combinations of r elements in a given array of size n
Operators in C / C++
Program for factorial of a number
The Knight's tour problem | Backtracking-1
Find minimum number of coins that make a given value
Program for Decimal to Binary Conversion
Program to find sum of elements in a given array