Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2K. Найти целое число K — показатель этой степени — Pascal(Паскаль)

var
  N,k: integer;
begin
  k := 0;
  ReadLn(N);
  while N shr 1 <> 0 do
  begin
    N := N shr 1;
    Inc(k);
  end;
  WriteLn(k);
  ReadLn;
end.

Следующий вариант

uses crt;
var n,k:longint;
begin
clrscr;
repeat
write('Введите положительное число, степень числа 2 n=');
readln(n);
until n>0;
k:=-1;{начнем с -1, чтобы можно было определить 1 как нулевую степень 2}
repeat
{сделаем защиту от "дурака"}
if (n mod 2=1)and(n>2) then{если получили нечетное число больше 2}
 begin
  write('Это не степень числа 2');
  readln;
  exit;{выходим из программы}
 end;
n:=n div 2;{делим на 2}
k:=k+1;{считаем}
until n=0;{ноль - конец цикла}
write('Это ',k,'-я степень числа 2');;
readln
end.

Leave a Comment

34 − 24 =