Определить натуральное число не больше заданного n - Pascal ABC

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

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

Определить натуральное число не больше заданного n с наибольшей суммой делителей. Использовать функцию вычисления суммы делителей числа

Решение задачи: «Определить натуральное число не больше заданного n»

textual
Листинг программы
function SumDel(n:integer):integer;
var i,s:integer;
begin
s:=n+1; //1 и само число
for i:=2 to trunc(sqrt(n)) do //остальные делители
if n mod i=0 then inc(s,i+n div i);//сам делитель и n/i
if frac(sqrt(n))=0 then dec(s,trunc(sqrt(n)));//если число полный квадрат, то
                                              //минус корень из n
SumDel:=s;
end;
var n,i,j,mx,imx:integer;
begin
write('Ведите натуральное число n=');
readln(n);
mx:=1;
imx:=1;
for i:=2 to n do
 begin
  j:=SumDel(i);
  if j>mx then
   begin
    mx:=j;
    imx:=i;
   end;
 end;
writeln('Максимальная сумма делителей у числа ',imx,' она = ',mx)
end.

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

  1. Сохраняет в переменной s значение n+1
  2. Использует цикл for для перебора всех чисел от 2 до корня из n (используя функцию trunc(sqrt(n)) для округления результата вниз до ближайшего целого числа)
  3. Проверяет, делится ли n на текущее значение i без остатка (используя оператор mod)
  4. Если да, то увеличивает значение переменной s на i и на (n/i) (используя оператор inc и функцию div)
  5. Если n является полным квадратом (используя функцию frac для получения дробной части от корня из n), то уменьшает значение переменной s на корень из n (используя функцию trunc для округления результата вниз до ближайшего целого числа)
  6. Функция SumDel возвращает значение переменной s
  7. Задает начальные значения переменных mx и imx равными 1
  8. Использует цикл for для перебора всех чисел от 2 до n
  9. Внутри цикла вызывает функцию SumDel для каждого числа i
  10. Если функция SumDel возвращает значение j, которое больше текущего значения mx, то обновляет значения mx и imx
  11. Выводит сообщение с максимальной суммой делителей и числом, для которого эта сумма была получена.

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


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

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

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