Var ar:array[1..n] of integer; ar2:array[1..n] of integer; i,k:integer;
function prost(a:integer):boolean; var i:integer; b:boolean; begin b:=true; for i:=2 to a div 2 do if a mod i=0 then begin; b:=false; break; end; if a=1 then b:=false; prost:=b; end;
begin; randomize; k:=0; for i:=1 to n do begin; ar[i]:=random(101); write(ar[i]:4); end; writeln; for i:=1 to n do if prost(ar[i]) then begin; inc(k); ar2[k]:=ar[i]; write(ar2[k]:4); end; end.
Для кодирования n символов требуется подобрать число, являющееся степенью двойки, большее или равное n. Степень двойки будет количеством бит, необходимых для кодирования одного символа.
Подберем подходящую степень:
не подходит
подходит, значит 6 - количество бит, необходимое для кодирования одного символа.
В пароле по условию 15 символов => потребуется 15*6=90 бит для кодирования всего пароля. Но "Каждый такой пароль в компьютерной системе записывается минимально возможным и одинаковым целым количеством байт". В одном байте, как известно, 8 бит. 90 на 8 не делится, а вот 96 как раз.
96/8 = 12 - минимально возможное количество байт для кодирования пароля. Так как 11 уже не подходит - в 11 байтах вместится всего 88 бит, а нам потребовалось 90.
Для 80 паролей объем памяти будет равен: 80 * 12 = 960 байт.
n=5;
Var
ar:array[1..n] of integer;
ar2:array[1..n] of integer;
i,k:integer;
function prost(a:integer):boolean;
var i:integer;
b:boolean;
begin
b:=true;
for i:=2 to a div 2 do
if a mod i=0 then
begin;
b:=false;
break;
end;
if a=1 then b:=false;
prost:=b;
end;
begin;
randomize;
k:=0;
for i:=1 to n do
begin;
ar[i]:=random(101);
write(ar[i]:4);
end;
writeln;
for i:=1 to n do
if prost(ar[i]) then
begin;
inc(k);
ar2[k]:=ar[i];
write(ar2[k]:4);
end;
end.
960 байт, 7680 бит.
Объяснение:
Для кодирования n символов требуется подобрать число, являющееся степенью двойки, большее или равное n. Степень двойки будет количеством бит, необходимых для кодирования одного символа.
Подберем подходящую степень:
не подходит
подходит, значит 6 - количество бит, необходимое для кодирования одного символа.
В пароле по условию 15 символов => потребуется 15*6=90 бит для кодирования всего пароля. Но "Каждый такой пароль в компьютерной системе записывается минимально возможным и одинаковым целым количеством байт". В одном байте, как известно, 8 бит. 90 на 8 не делится, а вот 96 как раз.
96/8 = 12 - минимально возможное количество байт для кодирования пароля. Так как 11 уже не подходит - в 11 байтах вместится всего 88 бит, а нам потребовалось 90.
Для 80 паролей объем памяти будет равен: 80 * 12 = 960 байт.
960 байт = 960 * 8 = 7 680 бит.