Temas
Los números amigos son realmente los números demonio; ya probé en ambos casos las rutinas para este tipo de números, obteniendo el mismo resultado.
El programa inicia un pocorápido y después, aparentemente se alenta y no hace nada; esto es debido a que conforme la numeración aumenta el proceso de verificación tarda para cada número. Por eso decidí poner la leyenda “Espere,procesando…” cada vez que coincide la comparación.
El código es el siguiente:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
classProgram
{
static void Main(string[] args)
{
long n1, n2, acum1, acum2, i;
//Iniciamos en el número 2 hasta el 100000
for (n1 = 2; n1 < 100000; n1++){
acum1 = 0; //Este acumulador sumará los divisores que controla la variable n2
for (n2 = 1; n2 < n1; n2++)
if (n1 % n2 == 0)acum1 += n2; //Si el residuo de la división entera es igual a cero, se acumula el divisor
if (acum1 == n1) //Si el número n1 es igual al acumulador de divisores se trata de un númeroperfecto
{
Console.WriteLine("Número perfecto: {0}", n1);
Console.WriteLine("Espere, procesando...");
}
}Console.WriteLine("Presione <Enter> para continuar");
Console.ReadLine();
//Se inicia desde el número 2 hasta wl 100000
for (n1 = 2; n1 < 100000; n1++){
acum1 = 0; acum2 = 0;
for (i = 1; i <= n1 / 2; i++)
{
if (n1 % i == 0)acum1 = acum1 + i;
}
//Lo anterior es que I inicia en 1 hasta el número divido entre 2 y se procede a acumular el divisor en acum1, cuando el residuo de la divisón entera sea...
Regístrate para leer el documento completo.