На натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей - Pascal ABC

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

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

на натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей Через Repeat или While
Листинг программы
  1. var a,b,i,j,s,max,N,d: longint;
  2. begin
  3. write('Введите натуральное число a=');
  4. readln(a);
  5. write('Введите натуральное число,больше ',a,' b=');
  6. readln(b);
  7. max:=0;
  8. d:=1;
  9. repeat
  10. s:=0;
  11. for j:=2 to i div 2 do
  12. if i mod j=0 then s:=s+j;
  13. if s>max then
  14. begin
  15. max:=s;
  16. N:=i;
  17. end;
  18. d:=d+1;
  19. until d<b;
  20. write('Наибольшую сумму делителей=',max,' имеет число ',N);
  21. end.
Программа выводит нули. Помогите решить правильно.

Решение задачи: «На натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей»

textual
Листинг программы
  1. var
  2.   a, b, i, j, s, max, N, d: longint;
  3.  
  4. begin
  5.   write('Введите натуральное число a=');
  6.   readln(a);
  7.   write('Введите натуральное число,больше ', a, ' b=');
  8.   readln(b);
  9.   max := 0;
  10.   d := a;
  11.   i := b;
  12.   repeat
  13.     s := 0;
  14.     for j := 2 to i div 2 do
  15.       if i mod j = 0 then
  16.         s := s + j;
  17.     if s > max then
  18.     begin
  19.       max := s;
  20.       N := i;
  21.     end;
  22.     d := d + 1;
  23.   until d < b;
  24.   write('Наибольшую сумму делителей=', max, ' имеет число ', N);
  25. end.

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

  1. В первой строке кода объявляются переменные a, b, i, j, s, max и N, которые будут использоваться для решения задачи. Переменная d инициализируется значением типа longint.
  2. Затем происходит чтение значений переменных a и b с помощью функции readln.
  3. Переменная max инициализируется значением 0.
  4. Переменная d инициализируется значением переменной a.
  5. Переменная i инициализируется значением переменной b.
  6. Затем идет цикл repeat, который будет выполняться до тех пор, пока переменная d не станет меньше переменной b.
  7. Внутри цикла переменная s инициализируется значением 0.
  8. Для каждого числа j (от 2 до i/2) выполняется проверка, делится ли число i на j без остатка. Если да, то к переменной s прибавляется значение j.
  9. Если сумма делителей числа i больше значения переменной max, то переменные max и N инициализируются соответствующими значениями.
  10. После окончания внутреннего цикла переменная d увеличивается на 1.
  11. Когда переменная d становится меньше переменной b, цикл repeat завершается.
  12. В последней строке кода выводится сообщение, содержащее значения переменных max и N.

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы