П»їprogram Code;
var n: integer;
//подпрограмма--—
procedure Bin(n: integer);
var k: integer;
begin
k:= 4096;
while k > 0 do begin
write(n div k);
n:= n mod k;
k:= k div 2;
end
end;
//---основная программа--—
begin
write ( 'Введите натуральное число: ' );
read ( n );
write ( 'Двоичный код: ' );
Bin ( n );
writeln;
end.
Протестируйте программу на Паскаль( прилагается).
1)Что она выполняет?
2) Добавьте процедуру Oct, которая будет переводить число из десятичной системы счисления в восьмеричную. Например, при вводе числа 121 должно получится число 171(8). Программу или скриншот пришлите на почту.
Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
S
−
1
)
2
, так как в худшем случае составное число вида
x
2
будет иметь два наибольших делителя
x
и 1. Время работы этого алгоритма
O
(
S
4
)
. Можно существенно ускорить вычисления, если учесть, что при поиске разложения на множители числа
N
можно рассмотреть только числа не превышающие
√
N
. Наибольшим делителем числа
N
будет
N
a
, где
a
– наименьший делитель, а вторым наибольшим делителем будет либо
N
b
, где
b
– второй по величине делитель
N
(также либо число, либо
a
2
), либо
a
, если
N
является произведением двух различных чисел, либо 1, если
N
=
a
2
.