Xaker_Two
Мыслитель
(5038)
4 года назад
1 - у вас не сумма делителей а их количество (summ += i будет суммой)
2 - оба цикла не верны т. к. вы изменяете лимиты которые вы трогать не должны вот вам пошаговая сокращенная отладка
n = 2
m = 4
//первый прогон
2 < 4
__//первый прогон влОженки
__2 < 4
____todo
__//второй прогон влОженки
__2 < 3
____todo
__//третий прогон влОженки
__2 < 2 //выход
//второй прогон
3 < 2 //выход
вы понимаете что творите?
3 - сделайте вывод пар (независимо от истиности условия) и если условие истино то рядом то что это дружественная пара
вот вам корректный цикл (вроде) для перебора пар без повторения когда 2-3 и 3-2 считаются одним и тем же
for(int i = n; i < m; i++)
for(int j = i; j < m; j++)
{
//todo
}
#include
using namespace std;
int deliteli(int a);
int main()
{
cout << "[n,m]:"; int n, m; cin >> n >> m;
for (; n <= m; n++)
{
for (; n <= m; m--)
{
int a = deliteli(n), b = deliteli(m);
if (n == b || m == a) { cout << n << m; }
}
}
}
int deliteli(int a)
{
int summ = 0;
for (int i = 1; i < a; i++)
{
int rodjer = a % i;
if (rodjer == 0) { summ++; }
}
return summ;
}