В матрице найти дружественные числа - Turbo Pascal
Формулировка задачи:
Составить программу с использованием подпрограммы поиска дружественных элементов матрицы. Вывести их индексы.
Решение задачи: «В матрице найти дружественные числа»
textual
Листинг программы
const m = 5; {ранг матрицы} type arr = array[1..m, 1..m] of longint; {тип для матрицы} {процедура генерации и печати исходной матрицы} procedure gen_prn(var x: arr); var i, j: longint; begin randomize; writeln('Исходная матрица:'); for i := 1 to m do begin for j := 1 to m do begin x[i, j] := 1 + random(9999); {генерируется натуральное число!} write(x[i, j]:5) end; writeln end end; {функция нахождения суммы собственных делителей натурального числа} function sd(x: longint): longint; var i, sum: longint; begin sum := 1; for i := 2 to x div 2 do if x mod i = 0 then sum := sum + i; sd := sum end; {процедура поиска и печати дружественных элементов матрицы} procedure friend(var x: arr); var i, j, p, q: longint; {индексы} found: boolean; {факт нахождения хотя бы одной пары дружественных элементов} begin found := false; {дружественные элементы пока не найдены} writeln('Дружественные элементы матрицы:'); for i := 1 to m do {сканируем матрицу, x[i, j] - элемент, для которого ищем пару} for j := 1 to m do {} for p := 1 to m do {сканируем матрицу, x[p, q] - предполагаемая пара для x[i, j]} for q := 1 to m do {} if (i * m + j < p * m + q) and {если x[p, q] находится "после" x[i, j] И} (x[i, j] <> x[p, q]) and {x[i, j] не равно x[p, q] И} (sd(x[i, j]) = sd(x[p, q])) {сумма собственных делителей x[i, j] равна сумме собственных делителей x[p, q]} then begin {то} write('(', i, ', ', j, '), (', p, ', ', q, '); '); {печатаем найденные индексы} found := true {хотя бы одну пару нашли, запоминаем этот факт} end; if not found then write('Не найдены'); {если дружественных элементов не найдено, печатаем соответствующее сообщение} writeln end; {основная программа} var a: arr; begin gen_prn(a); {генерируем и печатаем матрицу} friend(a); {находим и печатаем дружественные элементы матрицы} readln {программа завершится после нажатия <Enter>} end.
Объяснение кода листинга программы
В этом коде решается задача поиска дружественных чисел в матрице. Список функций и процедур в коде:
- gen_prn - генерация и печать исходной матрицы
- sd - функция нахождения суммы собственных делителей натурального числа
- friend - процедура поиска и печати дружественных элементов матрицы
Пояснение к коду:
- В процедуре gen_prn генерируется случайная матрица размером 5х5 и выводится на экран.
- Функция sd вычисляет сумму собственных делителей числа.
- В процедуре friend происходит поиск дружественных элементов в матрице. Она перебирает все возможные пары элементов и проверяет, являются ли они дружественными (равны по модулю, но не равны друг другу, и сумма их собственных делителей равна). Если такая пара найдена, индексы этой пары выводятся на экран. Если в матрице не найдено ни одной пары дружественных элементов, выводится сообщение
Не найдены
. В основной программе сначала генерируется и выводится на экран случайная матрица, затем ищутся и выводятся на экран дружественные элементы этой матрицы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д