1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.5 Упр.13 Задание 2 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 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$$.



Общая оценка
4.4 / 5
Другие учебники
Другие предметы