SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: Judai en Lunes 31 de Octubre de 2016, 23:19

Título: Números Perfectos: Que alguien me diga dónde está el error aquí
Publicado por: Judai en Lunes 31 de Octubre de 2016, 23:19
Hola, soy nuevo aquí y apenas me he iniciado en C++
Quise crear un programa que me muestre los 5 primeros números perfectos, pero al ejecutarlo me muestra el número 4 y el número 5.
¿Alguien podría ayudarme y decirme dónde está el error y por qué está mal? Se los agradecería bastante. Les adjunto el programa:

#include <iostream>
using namespace std;

int main(){
   
   int j, contador,suma, n;
   
   n=2;
   suma=0;
   contador=0;
   
   while (contador<5){
      n=n+1;
      for(j=1;j<n;j++){
         if (n%j==0)
            suma=suma+j;
         }
      if (suma==n){
         contador=contador+1;
         cout<<n<<endl;
         }
   }
system ("pause");
return 0;
}
Título: Re:Números Perfectos: Que alguien me diga dónde está el error aquí
Publicado por: chenech en Martes 1 de Noviembre de 2016, 12:16
Hola Judai, te falta inicializar a cero el valor de suma antes de cada bucle, añade suma = 0 despues de while, quedaría así:

Código: [Seleccionar]
#include <iostream>
using namespace std;

int main(){
   
   int j, contador,suma, n;
   
   n=2;
   contador=0;
   
   while (contador<5){
      n=n+1;
      suma = 0;
      for(j=1;j<n;j++){
         if (n%j==0)
            suma=suma+j;
         }
      if (suma==n){
         contador=contador+1;
         cout<<n<<endl;
         }
   }
system ("pause");
return 0;
}