Поиск максимальной суммы делителей - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Есть программ поиска НОД
Как изменить ее, чтобы вычисляла натуральное число от 1 до N с максимальной суммой делителей

Решение задачи: «Поиск максимальной суммы делителей»

textual
Листинг программы
var n,i,j,s,mx,nmx: integer;
begin
write('Введите n: ');
readln(n);
i:=1;
mx:=0;
while i<=n do
 begin
  s:=0;
  j:=1;
  while j<=i do
   begin
    if i mod j=0 then s:=s+j;
    j:=j+1;
   end;
  if s>mx then
   begin
    mx:=s;
    nmx:=i;
   end;
  i:=i+1;
 end;
writeln('Наибольший сумма делителей=',mx,' у числа ',nmx);
end.

Объяснение кода листинга программы

  1. Введенные переменные:
    • n - число, введенное пользователем, обозначает количество чисел, для которых нужно найти максимальную сумму делителей;
    • i - счетчик чисел от 1 до n;
    • j - счетчик делителей числа i;
    • s - сумма делителей числа i;
    • mx - максимальная сумма делителей;
    • nmx - число, для которого найдена максимальная сумма делителей.
  2. Ввод числа n с клавиатуры.
  3. Цикл while, выполняющийся до тех пор, пока i не станет равным n.
  4. Внутри цикла while создаются два вложенных цикла while.
  5. Во внутреннем цикле while для каждого делителя j от 1 до i проверяется, делится ли i на j без остатка.
  6. Если i делится на j без остатка, то к сумме s прибавляется значение j.
  7. После внутреннего цикла while проверяется, является ли сумма s больше текущей максимальной суммы mx.
  8. Если это так, то обновляются значения mx и nmx.
  9. После завершения внешнего цикла while выводится сообщение с наибольшей суммой делителей и числом, для которого эта сумма была найдена.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы