Перевоплотить функцию в процедуруfunction KolDel(n:integer):integer;var
Превратить функцию в процедуру
function KolDel(n:integer):integer;
var i,k:integer;
begin
k:=0;
for i:=1 to n do
if n mod i=0 then
k:=k+1;
KolDel:=k;
end;
var m,n,i:longint;
mx:byte;
begin
repeat
writeln('Введите интервал, 2 естественных числа, 2-ое болше первого');
readln(m,n);
until ngt;m;
mx:=1;
for i:=m to n do
if KolDel(i)gt;mx then mx:=KolDel(i);
writeln('Величайшее количество делителей имеют числа:');
for i:=m to n do
if KolDel(i)=mx then write(i,' ');
writeln;
write('количество=',mx);
readln
end.
2 ответа
Евгения Харутто
Procedure KolDel(n:integer; var k:integer);
var i:integer;
begin
k:=0;
for i:=1 to n do
if n mod i=0 then k:=k+1;
end;
var m,n,i:longint;
md,mx:integer;
begin
repeat
writeln('Введите интервал, 2 натуральных числа, 2-ое больше первого');
readln(m,n);
until ngt;m;
mx:=1;
for i:=m to n do
begin
KolDel(i,md);
if mdgt;mx then mx:=md;
end;
writeln('Наивеличайшее количество делителей имеют числа:');
for i:=m to n do
begin
KolDel(i,md);
if md=mx then write(i,' ');
end;
writeln;
write('количество=',mx);
readln
end.
Пример:
Введите интервал, 2 естественных числа, 2-ое больше первого
10 100
Наибольшее количество делителей имеют числа:
60 72 84 90 96
количество=12
var i:integer;
begin
k:=0;
for i:=1 to n do
if n mod i=0 then k:=k+1;
end;
var m,n,i:longint;
md,mx:integer;
begin
repeat
writeln('Введите интервал, 2 натуральных числа, 2-ое больше первого');
readln(m,n);
until ngt;m;
mx:=1;
for i:=m to n do
begin
KolDel(i,md);
if mdgt;mx then mx:=md;
end;
writeln('Наивеличайшее количество делителей имеют числа:');
for i:=m to n do
begin
KolDel(i,md);
if md=mx then write(i,' ');
end;
writeln;
write('количество=',mx);
readln
end.
Пример:
Введите интервал, 2 естественных числа, 2-ое больше первого
10 100
Наибольшее количество делителей имеют числа:
60 72 84 90 96
количество=12
Виктор
С маленький правкой процедуры, уменьшающей вдвое время ее работы.
procedure KolDel(n: integer; var res: byte);
var
i: integer;
begin
res := 2;
for i := 2 to n div 2 do
if n mod i = 0 then
res := res + 1;
end;
var
m, n, i: longint;
mx, kd: byte;
begin
repeat
writeln('Введите интервал, 2 естественных числа, 2-ое больше первого');
readln(m, n);
until n gt; m;
mx := 1;
for i := m to n do
begin
KolDel(i, kd);
if kd gt; mx then mx := kd
end;
writeln('Наивеличайшее количество делителей имеют числа:');
for i := m to n do
begin
KolDel(i, kd);
if kd = mx then write(i, ' ')
end;
writeln;
write('количество=', mx);
readln
end.
А вот такой вариант работает в 3.5 раза быстрее:
procedure KolDel(n: integer; var res: byte);
var
i: integer;
begin
res := 2;
for i := 2 to n div 2 do
if n mod i = 0 then
res := res + 1;
end;
var
m, n, i: longint;
mx, kd, k: byte;
a: array[1..255] of longint;
begin
repeat
writeln('Введите интервал, 2 натуральных числа, 2-ое больше первого');
readln(m, n);
until n gt; m;
mx := 1;
for i := m to n do
begin
KolDel(i, kd);
if kd gt; mx then begin mx := kd; k := 1; a[k] := i end
else
if kd = mx then begin k := k + 1; a[k] := i end
end;
writeln('Величайшее количество делителей имеют числа:');
for i := 1 to k do Write(a[i], ' ');
Writeln;
Write('Количество=', mx);
readln
end.
Пример
Введите интервал, 2 естественных числа, второе больше первого
37 86
Наибольшее количество делителей имеют числа:
60 72 84
Количество=12
procedure KolDel(n: integer; var res: byte);
var
i: integer;
begin
res := 2;
for i := 2 to n div 2 do
if n mod i = 0 then
res := res + 1;
end;
var
m, n, i: longint;
mx, kd: byte;
begin
repeat
writeln('Введите интервал, 2 естественных числа, 2-ое больше первого');
readln(m, n);
until n gt; m;
mx := 1;
for i := m to n do
begin
KolDel(i, kd);
if kd gt; mx then mx := kd
end;
writeln('Наивеличайшее количество делителей имеют числа:');
for i := m to n do
begin
KolDel(i, kd);
if kd = mx then write(i, ' ')
end;
writeln;
write('количество=', mx);
readln
end.
А вот такой вариант работает в 3.5 раза быстрее:
procedure KolDel(n: integer; var res: byte);
var
i: integer;
begin
res := 2;
for i := 2 to n div 2 do
if n mod i = 0 then
res := res + 1;
end;
var
m, n, i: longint;
mx, kd, k: byte;
a: array[1..255] of longint;
begin
repeat
writeln('Введите интервал, 2 натуральных числа, 2-ое больше первого');
readln(m, n);
until n gt; m;
mx := 1;
for i := m to n do
begin
KolDel(i, kd);
if kd gt; mx then begin mx := kd; k := 1; a[k] := i end
else
if kd = mx then begin k := k + 1; a[k] := i end
end;
writeln('Величайшее количество делителей имеют числа:');
for i := 1 to k do Write(a[i], ' ');
Writeln;
Write('Количество=', mx);
readln
end.
Пример
Введите интервал, 2 естественных числа, второе больше первого
37 86
Наибольшее количество делителей имеют числа:
60 72 84
Количество=12
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов