numeros perfectos con c

Iniciado por MarSalem, 15 Mayo 2018, 01:51 AM

0 Miembros y 1 Visitante están viendo este tema.

MarSalem

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
insta @marsquarepants

MAFUS

Puedes explicar lo que intentas hacer?

Serapis

#2
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...



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.