Здравствуйте, Гусев Денис!
Хорошая задачка для раздела "программирование нетривиальных задач" =)
Насколько мне известно, операция сравнения тоже является арифметической и без нее задачу решить невозможно
![](https://rfpro.ru/images/smiles/5.gif)
Но, я думаю, эту операцию все-таки можно использовать.
Функция проверки, делится ли A на B: AdivisableByB (в приложении)
Если честно, то мне всегда проще написать код, чем объяснять, что да как, так что вот пример.
Перебираете делители и считаете их сумму в двух вложенных циклах (для всех пар чисел от 1 до 1000):
<code>for i := 1 to 1000 do begin
for j := 1 to i do begin // либо до i-1, если числа в дружественной паре должны быть различны
si := 0;
sj := 0;
for k := 1 to i do if AdivisableByB(i, k) then inc(si, k);
for k := 1 to j do if AdivisableByB(j, k) then inc(sj, k);
if (si = j) and (sj = i) then;
{ на данный момент в i и j у нас находится пара дружественных чисел.
мы можем сделать с ними что захотим. Например, вывести на экран }
end;
end;</code>
PS: Компилировать не пробовал, но идея из кода должна быть совершенно ясна.
Приложение:
function AdivisableByB(a, b: integer): booleanvar i: integer;begin i := 0; while (i <= a) do inc(i, b); // i := i + b; AdivisableByB := (i = a); // Result := (i = a);end;