Число называется совершенным, если сумма всех его делителей равна ему самому. Нужно написать поиск таких чисел во введенном интервале.
int a, b;
cin >> a >> b;
printf("Perfect numbers of range [%d;%d]:\n", a, b);
for (int i = a; i <= b; i++)//перебор всех чисел в интервале
{
int sum = 0;//при каждом новом числе сумма обнуляется
for (int j = 2; j < abs(i); j++)
if (abs(i) % j == 0)//делитель - число, которое делит первичное число без остатка
{
sum += j;
}
if (sum == i)
cout << i << '\t';
}
Результат всегда 0. Какие диапазоны только не брал. Какую логическую ошибку допустил?
Да, знаю, что для отрицательных чисел не подойдёт, ибо сумма всегда будет положительной. Но и с положительными числами алгоритм неправильно работает.