Работа 3.5 Упр.16 Задание 2 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 16. Составить программу для нахождения чисел из интервала [М, N], имеющих наибольшее количество делителей. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-5/zad2/16 98
Сначала составим вспомогательную функцию, которая считает количество делителей числа. Для этого достаточно перебрать делители от $$1$$ до $$\sqrt{n}$$: если $$i$$ делит $$n$$, то вместе с ним делителем является и $$\frac{n}{i}$$. Поэтому при каждом найденном делителе количество увеличивается на $$2$$, а для полного квадрата нужно учесть, что корень считается один раз.
Затем в основном алгоритме:
- вводим границы интервала $$[M, N]$$;
- находим максимальное количество делителей среди всех чисел этого интервала;
- выводим все числа, у которых количество делителей равно найденному максимуму.
function KolDel(n: longint): integer;
var i, k: integer;
begin
k := 0;
for i := 1 to trunc(sqrt(n)) do
if n mod i = 0 then
begin
k := k + 2;
if i * i = n then k := k — 1;
end;
KolDel := k;
end;var m, n, i: longint;
mx: integer;
begin
repeat
writeln(‘Введите интервал вычислений n>m’);
readln(m, n);
until n > m;mx := 0;
for i := m to n do
if KolDel(i) > mx then mx := KolDel(i);writeln(‘Максимальное количество делителей = ‘, mx, ‘ имеют:’);
for i := m to n do
if KolDel(i) = mx then write(i, ‘ ‘);
end.
В этой программе функция KolDel возвращает количество делителей числа, а основной цикл находит все числа интервала с наибольшим значением этого количества.
Ответ
Программа находит все числа из интервала $$[M, N]$$, имеющие наибольшее количество делителей, и выводит их на экран.