Números amigos en Java

Codigos

Dado un conjunto de números enteros, imprima la cantidad de pares en la matriz que forman un par de números amigos.

Dos números son amigos si el primero es igual a la suma de los divisores del segundo, y si el segundo número es igual a la suma de los divisores del primero.

Ejemplos:

Entrada: arr [] = {220, 284, 1184, 1210, 2, 5}
Salida: 2

Explicación: (220, 284) y (1184, 1210) forman un par de números amigos

Entrada: arr [] = {2620, 2924, 5020, 5564, 6232, 6368}
Salida: 3

Explicación: (2620, 2924), (5020, 5564) y (6232, 6368)  forman una pareja de números amigos

Código Java

Una solución simple es pasar por cada par y verificar si forman un par amistoso (par de números amigos), si lo hacen incrementamos el conteo.

class NumerosAmigos {
    // Un simple programa Java para contar pares de números amigos en un array.

        // Calcular la suma de los divisores propios
        static int sumdeDiv(int x)
        {
            // 1 es un divisor propio
            int sum = 1;
            for (int i = 2; i <= Math.sqrt(x); i++)
            {
                if (x % i == 0)
                {
                    sum += i;

                    // Para manejar cuadrados perfectos
                    if (x / i != i)
                        sum += x / i;
                }
            }

            return sum;
        }

        // Comprobar si el par amigo
        static boolean esAmigo(int a, int b)
        {
            return (sumdeDiv(a) == b &&
                    sumdeDiv(b) == a);
        }

        // Este método imprime un par de pares amigos
        // presentes en la matriz de entrada
        static int contarPareja(int arr[], int n)
        {
            int count = 0;
            // Iterar a través de cada par,
            // y encuentra si es una pareja son números amigos
            for (int i = 0; i < n; i++)
                for (int j = i + 1; j < n; j++)
                    if (esAmigo(arr[i], arr[j]))
                        count++;
            return count;
        }

        public static void main(String args[])
        {

            int arr1[] = { 220, 284, 1184,
                    1210, 2, 5 };
            int n1 = arr1.length;

            System.out.println("Hay "+contarPareja(arr1, n1)+" pares de números amigos");

            int arr2[] = { 2620, 2924, 5020,
                    5564, 6232, 6368 };
            int n2 = arr2.length;

            System.out.println("Hay "+contarPareja(arr2, n2)+" pares de números amigos");
        }
}

Salida.

Hay 2 pares de números amigos
Hay 3 pares de números amigos

Por favor, escriba en los comentarios si encuentra algo incorrecto, o si desea compartir más información sobre el tema discutido anteriormente.

Código en Java
  • Números Amigos
Sending
User Review
5 (2 votes)

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.