[C++] [?] Numeros perfectos

Iniciado por -JohnWalls, 7 Diciembre 2014, 19:51 PM

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

-JohnWalls

Buenas tardes señores,
Quisiera saber si me pueden dar una mano con esto:
Hace un buen tiempo estoy tratando de pasar un algoritmo al programa C++

Lo que plantea es lo siguiente:
Los números perfectos son números naturales que son iguales a la suma de
todos sus divisores propios excepto él mismo.Así, por ejemplo, el 6 es un
número perfecto ya que es igual a la suma de sus tres divisores propios: 1,
2 y 3.

Se pide escribir un programa que calcule los cuatro primeros números
perfectos.

Aquí pego del codigo que estuve haciendo, no se en donde hago mal  :-[

Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

    int cont, i, num;
    float suma;
    i=0;
    cont=0;
    num=0;
       
    while(cont<=4){
                  suma=0;
                  num=num+1;
                  for(i=1;i<num;i++)
                  {
                                         if(num%i == 0)
                                         {
                                                suma=suma+1;
                                                }
                                         }
                  if(num == suma){
                         cont=cont+1;
                         cout<<"El "<<cont<<" numero perfecto es: "<<num<<endl;
                         }
                         
                  }
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


Muchas gracias por su ayuda!

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


-JohnWalls

Cita de: MCKSys Argentina en  7 Diciembre 2014, 20:09 PM
Hola!

Revisa este link.

Saludos!

Muchas gracias!! me había equivocado en la parte del acumulador de los numeros que el resultado era cero yo le puse esto:

Código (cpp) [Seleccionar]
if(num%i == 0)
                                         {
                                                suma=suma+1;
                                                }


Y tendría que ser esto:

Código (cpp) [Seleccionar]
if(numero%i == 0){
                               suma=suma+i;
                               }


Muchas gracias, igual!  ;-)