Поиск максимальной суммы делителей - 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.
Объяснение кода листинга программы
- Введенные переменные:
- n - число, введенное пользователем, обозначает количество чисел, для которых нужно найти максимальную сумму делителей;
- i - счетчик чисел от 1 до n;
- j - счетчик делителей числа i;
- s - сумма делителей числа i;
- mx - максимальная сумма делителей;
- nmx - число, для которого найдена максимальная сумма делителей.
- Ввод числа n с клавиатуры.
- Цикл while, выполняющийся до тех пор, пока i не станет равным n.
- Внутри цикла while создаются два вложенных цикла while.
- Во внутреннем цикле while для каждого делителя j от 1 до i проверяется, делится ли i на j без остатка.
- Если i делится на j без остатка, то к сумме s прибавляется значение j.
- После внутреннего цикла while проверяется, является ли сумма s больше текущей максимальной суммы mx.
- Если это так, то обновляются значения mx и nmx.
- После завершения внешнего цикла while выводится сообщение с наибольшей суммой делителей и числом, для которого эта сумма была найдена.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д