Ejemplos de Bucle For en C# para Números Perfectos y Números Narcisistas

El bucle for en C# es fundamantal para iterar sobre secuencias conocidas. A continuación, se presentan dos casos prácticos: la verificación de números perfectos y la búsqueda de números narcisistas.

Números Perfectos

Un número perfecto es aquel donde la suma de sus divisores propios (excluyendo al número mismo) es igual al propio número. Por ejemplo, el 6 tiene divisores 1, 2 y 3, y 1 + 2 + 3 = 6, por lo que es perfecto.

El siguiente código solicita un número natural, calcula la suma de sus divisores utilizando un bucle for y determina si es perfecto.

using System;

class Programa
{
    static void Main()
    {
        // Declarar variables
        int numEntrada;
        int sumaDivisores = 0;
        
        // Solicitar número
        Console.Write("Introduzca un número natural: ");
        numEntrada = int.Parse(Console.ReadLine());
        
        // Encontrar divisores y acumular suma
        for (int divisor = 1; divisor < numEntrada; divisor++)
        {
            if (numEntrada % divisor == 0)
                sumaDivisores += divisor;
        }
        
        // Mostrar resultado
        if (sumaDivisores == numEntrada)
            Console.WriteLine($"{numEntrada} es un número perfecto.");
        else
            Console.WriteLine($"{numEntrada} no es un número perfecto.");
    }
}

Al compilar y ejecutar, si se ingresa 6, se confirma como perfecto; con 7, no lo es.

Números Narcisistas

Los números narcisistas de tres dígitos son aquellos donde la suma de los cubos de sus dígitos individuales igualla al propio número. Se buscan en el rango de 100 a 999.

El código utiliza un bucle for para iterar sobre cada número, separa sus dígitos y veriifca la condición.

using System;

class Programa
{
    static void Main()
    {
        Console.WriteLine("Números narcisistas entre 100 y 999:");
        
        for (int num = 100; num <= 999; num++)
        {
            // Extraer dígitos
            int digitoUnidades = num % 10;
            int digitoDecenas = (num / 10) % 10;
            int digitoCentenas = num / 100;
            
            // Calcular suma de cubos
            int sumaCubos = (int)Math.Pow(digitoUnidades, 3) + 
                            (int)Math.Pow(digitoDecenas, 3) + 
                            (int)Math.Pow(digitoCentenas, 3);
            
            // Verificar si es narcisista
            if (num == sumaCubos)
            {
                Console.WriteLine(num);
            }
        }
    }
}

Al ejecutar, se imprimen los números 153, 370, 371 y 407.

Etiquetas: CSharp for-loop perfect-numbers narcissistic-numbers

Publicado el 6-19 00:05