Для того щоб бути виконаною комп'ютером, програма, що описана мовою програмування, має бути перетворена на послідовність команд, що мають вигляд комбінації чисел п
80 кбайт = 80*1024 байт = 81920 байт = 81920*8 бит = 655360 бит. 655360 бит со скоростью 1536 бит/сек передаются за x секунд → х=655360/1536 сек. За то же время со скоростью 768 бит/сек можно передать файл размером x сек * 768 бит/сек = 655360/1536*768 бит = 327680 бит = 327680/8 байт = 40960 байт = 40960/1024 кбайт = 40 кбайт
время1= 80*1024*8 бит/2048 бит в сек=320 сек размер файла за время1 = 768 бит в сек*320 сек=245760 бит=30720 байт= 30 Кбайт
1) 120 кбайт = 122880 байт 2) 3072 бит/ cек = 384 байт/cек 3) 122880 / 384 = 320 секунд - нужно для передачи 4)1024 бит/сек = 128 байт/ сек 5)128*320=40960 байт - можно передать за то же время через другое соединение 6) 40960 / 1024 = 40 кбайт ответ: 40 кбайт
С небольшой правкой процедуры, уменьшающей вдвое время ее работы.
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.
А вот такой вариант работает в 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 натуральных числа, второе больше первого'); 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.
Пример Введите интервал, 2 натуральных числа, второе больше первого 37 86 Наибольшее количество делителей имеют числа: 60 72 84 Количество=12
655360 бит со скоростью 1536 бит/сек передаются за x секунд → х=655360/1536 сек.
За то же время со скоростью 768 бит/сек можно передать файл размером x сек * 768 бит/сек = 655360/1536*768 бит = 327680 бит = 327680/8 байт = 40960 байт = 40960/1024 кбайт = 40 кбайт
время1= 80*1024*8 бит/2048 бит в сек=320 сек
размер файла за время1 = 768 бит в сек*320 сек=245760 бит=30720 байт= 30 Кбайт
1) 120 кбайт = 122880 байт
2) 3072 бит/ cек = 384 байт/cек
3) 122880 / 384 = 320 секунд - нужно для передачи
4)1024 бит/сек = 128 байт/ сек
5)128*320=40960 байт - можно передать за то же время через другое соединение
6) 40960 / 1024 = 40 кбайт
ответ: 40 кбайт
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.
А вот такой вариант работает в 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 натуральных числа, второе больше первого');
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.
Пример
Введите интервал, 2 натуральных числа, второе больше первого
37 86
Наибольшее количество делителей имеют числа:
60 72 84
Количество=12