Похоже, что вы собрали свою логику "все идеально" с логикой "все числа под заданным пределом", чтобы вы не получили желаемых результатов.
Я бы прошел ваш тести поместите его в функцию.
bool isPerfect(int number) {
int j{}, sum{};
for (int i=1; i<number; i++) {
j = number % i;
if (j == 0) sum = sum + i;
}
return (sum == number);
}
Затем вызовите эту функцию несколько раз со всеми целыми числами, меньшими, чем заданный вход:
int main()
{
std::cout << "Enter a number ";
int number{};
std::cin >> number;
for (int n = 1; n <= number; n++) {
if (isPerfect(n))
std::cout << n << " ";
}
}
Конечно, вы все равно можете делать все это в своей функции main (), но это намного понятнее, когда вы разбиваете ее.