Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как мне в Питоне найти степень двойки?

Влад Танк Ученик (236), закрыт 5 лет назад
у меня задача: мне вводят число, если это не какая-то степень двойки, то программа выводит "НЕТ", иначе выводит в какой степени двойка.
Лучший ответ
Senior Backend Developer Оракул (80040) 5 лет назад
Для этого есть логарифмы
т. е. log2(16) = 4
import math
math.log2(16) % 2 == 0
Терр ОнталМудрец (12796) 5 лет назад
Что? Причем здесь делимость степени на два
При том, что математика.
extrnМыслитель (7178) 5 лет назад
скорее math.log2(8) % 1
потому, что
>>> math.log2(8) % 2
1.0

так же можно сделать
>>> math.log2(8).is_integer()
True
Senior Backend Developer Оракул (80040) тут согласен
Остальные ответы
Alexey Prochorenko Оракул (55191) 5 лет назад
умножай 2 на 2 и так далее и сравнивай с числом
если меньше, то умножай дальше, если равно выдавай число циклов, если больше - пиши "нет"
отдельная ветвь для отрицательных степеней, если надо
Юрий Моисеев Оракул (83944) 5 лет назад
n=int(input("Число:"))
i=1
while 2**i<n:i+=1
print(i if 2**i==n else 'No')
Аглая Шниц Искусственный Интеллект (145260) 5 лет назад
print ((lambda x, n, l : l(x, n, l)) (int(input()), 0, lambda x, n, l : "НЕТ" if x&1 and x!=1 else str(n) if x==1 else l(x>>1,n+1, l)))
Похожие вопросы