
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [586132;
586430], числа, имеющие максимальное количество различных делителей. Найдите минимальное и максимальное из таких чисел. Для каждого из них в отдельной строчке выведите количество делителей и два наибольших делителя в порядке убывания. Паскаль 

Ответы на вопрос

Ответ:
Совсем не поможет, но как минимум даст толчок
Объяснение:
Сам на паскале не пишу, но нашел программку:
var
a,b,n,m,i: word;
begin
write('Числовой промежуток: ');
readln(a,b);
write('Количество делителей не менее... ');
readln(n);
while a <= b do begin
m := 0;
for i:=1 to a do
if a mod i = 0 then m := m + 1;
if m >= n then begin
write(a,' - ', m,' - ');
for i:=1 to a do
if a mod i = 0 then write(i,' ');
writeln;
end;
a := a + 1;
end;
end.
Вот как примерно выглядит на выходе:
Числовой промежуток: 21 44
Количество делителей не менее... 5
24 - 8 - 1 2 3 4 6 8 12 24
28 - 6 - 1 2 4 7 14 28
30 - 8 - 1 2 3 5 6 10 15 30
32 - 6 - 1 2 4 8 16 32
36 - 9 - 1 2 3 4 6 9 12 18 36
40 - 8 - 1 2 4 5 8 10 20 40
42 - 8 - 1 2 3 6 7 14 21 42
44 - 6 - 1 2 4 11 22 44



Вот программа на Pascal, которая выполняет задачу по поиску чисел с максимальным количеством различных делителей в заданном числовом интервале:
pascalprogram MaxDivisorCount; var minNumber, maxNumber, i, j, num, maxDivisorCount, currentDivisorCount, divisor: integer; maxDivisors: array[1..2] of integer; begin minNumber := 586132; maxNumber := 586430; maxDivisorCount := 0; for num := minNumber to maxNumber do begin currentDivisorCount := 0; for divisor := 1 to num do begin if (num mod divisor = 0) then begin currentDivisorCount := currentDivisorCount + 1; if currentDivisorCount > maxDivisorCount then begin maxDivisorCount := currentDivisorCount; maxDivisors[1] := divisor; maxDivisors[2] := 1; end else if currentDivisorCount = maxDivisorCount then begin if divisor > maxDivisors[1] then begin maxDivisors[2] := maxDivisors[1]; maxDivisors[1] := divisor; end else if divisor > maxDivisors[2] then begin maxDivisors[2] := divisor; end; end; end; end; if currentDivisorCount = maxDivisorCount then begin writeln('Число: ', num); writeln('Количество делителей: ', maxDivisorCount); writeln('Наибольшие делители: ', maxDivisors[1], ' ', maxDivisors[2]); writeln; end; end; end.
Эта программа перебирает все числа в заданном диапазоне, подсчитывает количество делителей для каждого числа и сравнивает его с максимальным количеством делителей, найденным до этого. Если текущее число имеет больше или равное количество делителей, то оно становится новым максимумом, и его наибольшие делители записываются в массив maxDivisors
. По окончании поиска выводятся найденные числа с максимальным количеством делителей, и их наибольшие делители.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili