Напомним, что совершенным называется число, которое равно сумме всех своих делителей (исключая, конечно, само число). Таким образом, для каждого числа из промежутка от 2 до 1000 нужно находить сумму делителей и проверять эту сумму на равенство с самим числом. Если равенство есть, то печатаем проверяемое число.

   #include<iostream.h>
   int LO=2;    //Нижняя граница отрезка.
   int HI=1000; //Верхняя граница отрезка.
   main ()
   {
      cout << "Совершенные числа из промежутка от " << LO << " до " << HI << endl;
      for  (int num=LO; num<=HI; num++)
      {
         int sum = 1;
         for  (int factor=2; factor<num; factor++)
            if  (num%factor==0)
               sum += factor;
         if  (sum==num)
            cout << num << endl;
      }
   }
Текст этой программы можно взять здесь.