Números perfectos y sus divisores C#

publicado por: Anonymous

estoy realizando un programa en el cual se determinan cuales son los números perfectos que existen en un rango que el usuario especifica, cuando este introduce un rango limite el programa muestra los números perfectos comprendidos entre ese rango, mi problema es cuando quiero también imprimir juntamente con los números perfectos encontrados sus respectivos divisores para así comprobar que en realidad es un numero perfecto.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;  
using System.Threading.Tasks;

    namespace RangoPerfectos
    {
    class Program
    {
         static void Main(string[] args)
        {
        int b; int s; int a; int num; int j;

        Console.Write("Determine hasta que numero desea realizar la busqueda de numeros perfectos: ");
        num = int.Parse(Console.ReadLine());

        for(int i=1;i<=num;i++){
            b=0;
            s = i/2;

            for(j=1;j<=s;j++){

                a= i % j;

                if(a == 0)
                    b = b + j;
            }
            if(b== i)
                Console.WriteLine("El numero "+i+ " es perfecto y su divisores son: " +s);

        }
            Console.ReadKey();
        }

    }
}

Por el momento solo he logrado que me imprima el ultimo divisor de cada numero perfecto, mas no todo el conjunto de divisores que conforman al numero perfecto y quiero imprimir no solo un divisor sino todos los divisores de cada numero perfecto encontrado.

solución

Intentalo de la siguiente forma, faltaba un acumulador:

    using System;

    namespace RangoPerfectos
    {
        class Program
        {
            static void Main(string[] args)
            {
                int b; int num; int j;
                string divisores = "";

                Console.Write("Determine hasta que numero desea realizar la busqueda de numeros perfectos: ");
                num = int.Parse(Console.ReadLine());

                for (int i = 1; i <= num; i++)
                {
                    b = 0;

                    for (j = 1; j <= (i / 2); j++)
                    {
                        if (i % j == 0)
                        {
                            b += j;
                            divisores += " " + j + " ";
                        }
                    }
                    if (b == i)
                        Console.WriteLine("El numero " + i + " es perfecto y su divisores son: " + divisores);
                    divisores = "";
                }
                Console.ReadKey();
            }
        }
    }

Espero te sirva!

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *