Напомним, что совершенным называется число, которое равно сумме всех своих делителей (исключая, конечно, само число). Таким образом, для каждого числа из промежутка от 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; } }