Работа 3.5 Упр.13 Задание 2 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 13. Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары «дружественных» чисел, которые не больше данного числа N. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-5/zad2/13 98
Сумму собственных делителей числа удобно вычислять отдельной подпрограммой. Для каждого числа $$n$$ перебираем делители от $$1$$ до $$n \div 2$$, потому что большего собственного делителя у числа быть не может. Если $$i$$ делит $$n$$ без остатка, прибавляем $$i$$ к сумме.
Затем перебираем все пары чисел $$i$$ и $$j$$, где $$1 \le i < j \le N$$, и проверяем условие дружественности:
$$SumDel(i)=j \land SumDel(j)=i$$
Если условие выполняется, то числа $$i$$ и $$j$$ — дружественная пара.
function SumDel(n: longint): longint;
var i, sum: longint;
begin
sum := 0;
for i := 1 to n div 2 do
if n mod i = 0 then
sum := sum + i;
SumDel := sum;
end;var a: longint;
i, j: integer;
begin
readln(a);
for i := 1 to a — 1 do
for j := i + 1 to a do
if (SumDel(i) = j) and (SumDel(j) = i) then
writeln(i, ‘ ‘, j);
end.
Ответ
Программа выводит все пары дружественных чисел, не превышающих заданное число $$N$$.