П»ї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). Программу или скриншот пришлите на почту.

arkadyhmp074l6 arkadyhmp074l6    2   07.05.2020 15:39    0

Ответы
каринааааа12 каринааааа12  07.05.2020 16:30

Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие  

(

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

.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика