Primero que todo deberias usar llaves en el while....
Código C:
Ver original#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int x, aux, i;
cout <<"Ingrese un número";
cin >>x;
i = x;
aux = 0;
while (i>0) {
i--;
if (x%i == 0)
{
aux = aux + i;
}
}
if (x == aux)
cout <<"El número es perfecto";
return 0;
}
Ademas el modulo deberia ser por i y no por uno.
Fijate que en la wiki tienes otro algoritmo tambien...
http://es.wikipedia.org/wiki/N%C3%BAmero_perfecto