Маша Малинина
Просветленный
(35238)
3 года назад
Во-первых, надо правильно вопросы задавать. 10 является степенью двойки - разве нет, если учесть, что 10=2**(1/lg2) ? Вот трансцендентное число 1/lg2 и будет в данном случае степенью двойки! А если требуется установить является ли введённое положительное число целой степенью двойки, то так и надо говорить!
Во-вторых, никаких циклов здесь вообще не требуется. Всё что требуется - это пара операторов:
n = int(input("n = "))
print("Число можно разложить в степень двойки" if n&(n-1) else "Число нельзя разложить в степень двойки")
А если надо сделать обязательно через цикл, то это надо заранее специально оговаривать.
В-третьих, я надеюсь, что разрешено ограничиваться только введением целого положительного числа, потому что если вводится любое положительное число вещественного или дробного типов, то его ещё нужно проверять на принадлежность к множеству целых чисел.
Пользователь вводит положительное число. Если это число можно представить в виде степени двойки — программа выводит “Число можно разложить в степень двойки”, иначе — “Число нельзя разложить в степень двойки”. Оператор if-else должен быть вне цикла.