• Jueves 28 de Marzo de 2024, 20:16

Autor Tema:  Números Perfectos: Que alguien me diga dónde está el error aquí  (Leído 2161 veces)

Judai

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Números Perfectos: Que alguien me diga dónde está el error aquí
« en: Lunes 31 de Octubre de 2016, 23:19 »
0
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;
}

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Números Perfectos: Que alguien me diga dónde está el error aquí
« Respuesta #1 en: Martes 1 de Noviembre de 2016, 12:16 »
0
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;
}
« última modificación: Martes 1 de Noviembre de 2016, 12:19 por chenech »