Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MarSalem en 15 Mayo 2018, 01:51 am



Título: numeros perfectos con c
Publicado por: MarSalem en 15 Mayo 2018, 01:51 am
me piden que realize un programa que me indique cuando un numero es perfecto o no.

#include <stdio.h>

int main ()
{
   int i=1 , suma , num ;
   
   printf("ingrese un numero ; ") ;
   scanf("%d" , &num);
   
   do {
      i++ ;
      num / i ;
   }
   while (num%i==0)  ; {
      suma = i ;
   }
      if (num==suma)
      printf("el numero %d es perfecto" , suma) ;
}
   este es mi codigo pero no funciona, ayuda pls


Título: Re: numeros perfectos con c
Publicado por: MAFUS en 15 Mayo 2018, 15:20 pm
Puedes explicar lo que intentas hacer?


Título: Re: numeros perfectos con c
Publicado por: Serapis en 15 Mayo 2018, 20:13 pm
Lo que en realidad Mafus te está preguntando es si sabes lo que es un número perfecto?.

Un número es perfecto cuando la suma de todos sus divisores es igual al propio número.  Luego se trata de ir buscando los divisores e ir sumándolos, y al final comprobar si esa suma coincide con el número recibido...


Código:
Buleano = Funcion EsNumeroPerfecto(entero numero)
    entero divisor = 2  //el primer divisor... ya sabemos que todo nº es divisible por 1.
    entero n = 1
    entero fin = (numero \2)  // hay un límite de búsqueda. llegando a la mitad, quizás sea divisible por 2, más allá solo es divisible por sí mismo...

    Hacer
        si (numero modulo divisor) = 0)
            n += divisor              
        fin si
        divisor += 1
    repetir mientras (n <= fin)  // fin, porque un  divisor de 2 lo reduce a la mitad.
    
    EsNumeroPerfecto = (n = numero)
fin funcion


p.d.: Si pones un bucle para tratar de cuales son números perfectos empezando por el 1, acota hasta 10.000. Ten en cuenta que a medida que los números aumentan la cantidad de divisores para cada cual también, luego es un problema de naturaleza exponencial... encontrar los primeros es rápido, luego se requiere paciencia... y más allá que lo continúen tus nietos.  :laugh: :laugh:

Hay quien no considera el 1 como número perfecto, para mi lo es pués cumple la premisa.