Превратить функцию в процедуру function KolDel(n:integer):integer; var i,k:integer; begin k:=0; for i:=1 to n do if n mod i=0 th
Превратить функцию в процедуру
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 натуральных числа, второе болше первого'); readln(m,n); until n>m; mx:=1; for i:=m to n do if KolDel(i)>mx then mx:=KolDel(i); writeln('Наибольшее количество делителей имеют числа:'); for i:=m to n do if KolDel(i)=mx then write(i,' '); writeln; write('количество=',mx); readln end.
<em>С небольшой правкой процедуры, уменьшающей вдвое время ее работы.</em>
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 натуральных числа, второе больше первого'); readln(m, n); until n > m; mx := 1; for i := m to n do begin KolDel(i, kd); if kd > 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.
<em>А вот такой вариант работает в 3.5 раза быстрее:</em>
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 натуральных числа, второе больше первого'); readln(m, n); until n > m; mx := 1; for i := m to n do begin KolDel(i, kd); if kd > 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.
<u>Пример</u> Введите интервал, 2 натуральных числа, второе больше первого 37 86 Наибольшее количество делителей имеют числа: 60 72 84 Количество=12
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 натуральных числа, второе больше первого'); readln(m,n); until n>m; mx:=1; for i:=m to n do begin KolDel(i,md); if md>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.
Пример: <span>Введите интервал, 2 натуральных числа, второе больше первого 10 100 Наибольшее количество делителей имеют числа: 60 72 84 90 96 количество=12</span>
Так как вы не указали язык на котором вам нужна программа, то приведу на бейсике (basic) как самый вероятно подходящий. Просто скопируйте текст из приложенного файла в редактор кода и скомпилируйте, что бы получить программу. Файл сохранен в формате WordPad
1414 - суммы цифр могут быть только 14 и 14 148 - только 14 и 8 145 - только 14 и 5
214 не может быть такого результата, так как суммы цифр могут быть только 2 и 14, но записаны они в порядке возрастания. 515 - 5 и 15 - записаны в порядке возрастания, не соответ. условию. 814 - 8 и 14 - не соотв. условию 114 - 11 и 4 (но может быть и 1 и 14) , в принципе - такой результат возможен ответ 5