Programa Java para comprobar si el recuento de divisores es par o impar

Dado un número “n”, encuentra si el número total de divisores es par o impar.

Ejemplos:

Input: n = 10      
Output: Even

Input: n = 100
Output: Odd

Input:  n = 125
Output: Even

Un enfoque ingenuo sería encontrar todos los divisores y luego ver si el número total de divisores es par o impar.

La complejidad temporal para tal solución sería O(sqrt(n))

// 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 program
    public static void main(String args[])
    {
        System.out.println("The count of divisor:");
        countDivisors(10);
    }
}
/* This code is contributed by Nikita Tiwari.*/
Producción:

The count of divisor:
Even

Solución Eficiente:
Podemos observar que el número de divisores es impar solo en el caso de los cuadrados perfectos. Por lo tanto, la mejor solución sería verificar si el número dado es un cuadrado perfecto o no. Si es un cuadrado perfecto, entonces el número de divisores sería impar, de lo contrario sería par.

// Java program for
// Efficient Solution to find
// if count of divisors is
// even or odd
import 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 program to test above function */
    public static void main(String args[])
        throws IOException
    {
        System.out.println("The count of "
                           + "divisors of 10 is: ");
  
        countDivisors(10);
    }
}
  
/* This code is contributed by Nikita Tiwari. */
Producción:

The count of divisors of 10 is: 
Even

Consulte el artículo completo sobre Comprobar si el recuento de divisores es par o impar para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *