//Algoritmo de números perfectos.
#include <iostream>
using namespace std;
int main(void) {
//Perdonen tantos comentarios.
int n, c=1, a=0, r;
char auxiliar, opc='n';
do{
cout<<"-------------------------------\n";
cout<<"Algoritmo de números perfectos\n";
cout<<"-------------------------------\n";
//Un número perfecto es un número natural que es igual a la suma de sus divisores propios positivos, sin incluirse él mismo. Ejemplo: 6 es un número perfecto, porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3. Los siguientes números perfectos son 28, 496 y 8128.
cout<<"Ingrese un número: ";
cin>>n;
//La variable "n" es por "número" y es la variable que almacenará el número a evaluar y será la condición para detener la iteración.
cout<<"---\n";
do{
r=n%c;
//El operador módulo (%) que también es conocido informalmente como el operador “resto” porque retorna el resto después de una división entera.
if (r==0){
cout<<c<<endl;
a+=c;
//La variable "a" es un "acumulador" que sumará y almacenará sus valores en cada iteración.
}
c+=1;
//La variable "c" es un "contador" que incrementará su valor en cada iteración.
}while(c!=n);
if(a==n){
cout<<"---\n";
cout<<n<<" es un número perfecto!";
}
else{
cout<<"---\n";
cout<<n<<" no es un número perfecto";
}
cout<<"\nOtro número perfecto? s/n"<<endl;
cin>>auxiliar;
system("pause");
system("cls");
}while( auxiliar!= opc);
cout<<"\nUsted ha salido del programa";
}