Найти число от 1 до n с максимальной суммой делителей - PascalABC.NET

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

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

Должно работать для n<=1 000 000 Вот мой код и я не знаю где ошибка...
Листинг программы
  1. Program b;
  2. Var
  3. n,i,j,max,maxn:Integer;
  4. a:Array[1..1000000] Of Integer;
  5. BEGIN
  6. Readln(n);
  7. j:=1;
  8. For i:=1 To n Do
  9. a[i]:=1;
  10. For i:=2 To n Do
  11. Begin
  12. j:=i;
  13. While j<=n Do
  14. Begin
  15. a[j]:=a[j]+i;
  16. j:=j+i;
  17. End;
  18. End;
  19. max:=a[1];
  20. maxn:=1;
  21. For i:=1 To n Do
  22. If (a[i]>max) Then
  23. Begin
  24. max:=a[i];
  25. maxn:=i;
  26. End;
  27. Writeln(maxn);
  28. END.

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

textual
Листинг программы
  1. Program b;
  2. var n,i,j,k,max,maxn:Integer;
  3. begin
  4. readln(n);
  5. max:=1;
  6. maxn:=1;
  7. for i:=2 To n Do
  8.  begin
  9.   k:=2;//1 и само
  10.   for j:=2 to trunc(sqrt(i)) do//считаем делители до корня из числа и умножаем на 2
  11.   if i mod j=0 then inc(k,2);
  12.   if frac(sqrt(i))=0 then dec(k);//если число полный квадрат, то минус 1
  13.   if k>max then
  14.    begin
  15.     max:=k;
  16.     maxn:=i;
  17.    end;
  18.   end;
  19. write(maxn);
  20. end.

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

  1. Объявлены переменные: n, i, j, k, max, maxn (10).
  2. С помощью функции readln(n) вводится число n (11).
  3. Переменная max инициализируется значением 1 (12).
  4. Переменная maxn инициализируется значением 1 (13).
  5. Два вложенных цикла for начинаются. Первый цикл проходит по числам от 2 до n (14).
  6. Внутри первого цикла начинается второй цикл for который считает делители числа i до его корня (15).
  7. Если число i делится на j без остатка, то к переменной k прибавляется 2 (16).
  8. Если число i является полным квадратом (то есть его корень извлекается без остатка), то переменная k уменьшается на 1 (17).
  9. Если переменная k больше max, то максимальное значение присваивается переменной max, а переменная maxn получает значение i (18).
  10. По завершению вложенных циклов, число maxn выводится на экран (19).
  11. Конец программы (20).

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


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

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

11   голосов , оценка 4.273 из 5

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

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

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