Как проверить является ли число степенью двойки python
Перейти к содержимому

Как проверить является ли число степенью двойки python

  • автор:

Как проверить является ли натуральное число степенью двойки в Python

Теперь, взяв and между n и n-1, мы получим все нули в двоичной записи. Для числа, не являющегося степенью двойки, мы не получим настолько «инвертированные» записи. По аналогии с десятичной системой: только отняв от круглого числа вроде 10000 или 1000 единицу, мы получим в результате все девятки.

Проверку на n=0 можно не делать, так как по условию задачи n — натуральное. То есть итоговое решение будет выглядеть как:

Является ли число степенью двойки?

Прошу помочь найти ошибку. Смотрю на код, рассуждаю, вроде всё должно работать. Варианты с функциями и for не рассматриваются. Хочу разобраться именно в этом примере.

1 2 3 4 5 6 7 8 9 10 11 12
x=int(input()) if x%2==0: i=0 while 2**ix: if 2**i==x: print(i) elif 2**i>x: print('НЕТ') else: i=i+1 else: print('НЕТ')

Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Проверить, является ли заданное натуральное число степенью двойки
Здравствуйте, форумчане. Есть следующее задание: Дано натуральное число N. Выведите слово.

Выведите слово YES, если число N является точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.

Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки
# Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки. #.

Проверить является ли число степенью тройки
def is_power_three(n): print(n) if n == 1: return ‘Є степенем трійки’ if n.

Проверить, является ли число a степенью числа b
Решите задачу одним циклом while, допускается применение условных операторов. Задано два числа a.

Условие

По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.

Операцией возведения в степень пользоваться нельзя!

Решение

n = int(input()) two_in_power = 2 power = 1 while two_in_power 

Комментарии

Nate Tiger :

Вот такая реализация покороче:
n = int(input())
i = 1
while n > = 2**i:
i += 1
print((i-1), 2**(i-1))

Аноним : Там нельзя использовать возведение в степень с помощью «**» Dmitry : n = int(input())
i = 2
nn = 1
while i i *= 2
nn += 1
print(nn - 1, i // 2) Farrukh : def power_of_two(n):
sqr=1
while(sqr <=n):
print(sqr,end=' ')
sqr=sqr*2

Добавить комментарий Отменить ответ

ЕГЭ на соточку для чайников

Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене ��

Проверить, является ли число n точной степенью двойки

2) Ввести число n с клавиатуры. Если число n является точной степенью двойки, вывести “YES”, в противном случае “NO”.

94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 Ответы с готовыми решениями:

Является ли введённое натуральное число степенью двойки
Во многих задачах, связанных с компьютерами, особенно близких к аппаратной части, важную роль.

Выведите слово YES, если число N является точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.

Проверить, является ли заданное натуральное число степенью двойки
Здравствуйте, форумчане. Есть следующее задание: Дано натуральное число N. Выведите слово.

Является ли число степенью двойки?
Прошу помочь найти ошибку. Смотрю на код, рассуждаю, вроде всё должно работать. Варианты с.

141 / 141 / 38 Регистрация: 20.02.2012 Сообщений: 597 и что у вас не получается? и что пробовали? 562 / 302 / 189 Регистрация: 20.05.2016 Сообщений: 592 594 / 286 / 178 Регистрация: 06.06.2016 Сообщений: 547
1 2 3 4 5
n = int(input()) if n & (n - 1) : print("NO") else: print("YES")

Эксперт Python

4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6

ЦитатаСообщение от regio1961 Посмотреть сообщение

if n & (n - 1)
Это вряд ли. Будет True, если в двоичной записи есть хоть одна единица. Но вообще подход интересный.
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547

ЦитатаСообщение от dondublon Посмотреть сообщение

Это вряд ли. Будет True, если в двоичной записи есть хоть одна единица. Но вообще подход интересный.
__________________

А запустить программу не пробовали, перед тем как высказать свое мнение?

Эксперт Python

4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
regio1961, перепутал "YES" и "NO". Бывает. Привык, что в первой ветке то, что по True.
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083

1 2 3
n = int(input('n = ')) rez = ['no','yes'] print(rez[n & (n-1) == 0])

1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083

f=lambda n: ((n&(n-1)==0)and n) and (True) or (False)

12 / 12 / 10
Регистрация: 17.06.2016
Сообщений: 70

1 2 3 4 5 6 7 8 9 10
s=2 a=0 while as: for i in range(100): a=2**i if a==s: print('true') break if a!=s: print('no')

Простой вариант, работает,но исправьте ошибку(брейк не выходит из цикла)
Регистрация: 03.01.2017
Сообщений: 2

1 2 3 4 5 6 7 8 9 10 11 12
# -*- coding: utf-8 -*- n = int(input('Введите число: ')) s = 1 x = 0 while sn: s *= 2 x+=1 if s==n: print('Да!') break else: print('Нет!')

269 / 253 / 186
Регистрация: 28.10.2015
Сообщений: 723

1 2 3 4 5 6 7
def power2(n): if n  0: return False if n == 1: return True return n & 1 == 0 and power2(n // 2) for i in range(10): print(i, power2(i))

Эксперт по компьютерным сетям

5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977

def power_of_2(n): print(('NO', 'YES')[bin(n)[2:].count('1') == 1])
def power_of_2(n): print(('NO', 'YES')[not bin(n)[2:].count('1')-1])

Регистрация: 02.04.2016
Сообщений: 351
regio1961, что-то я не понял вашего решения. можете объяснить что это за условие?

if n & (n - 1)

594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547

Это условие того, что n НЕ является степенью 2. Для его понимания рассмотрите примеры, задавая n в двоичном виде.

Регистрация: 02.04.2016
Сообщений: 351
regio1961, гениальненько
198 / 85 / 15
Регистрация: 27.07.2018
Сообщений: 323
regio1961, Как называется ваша конструкция
Вернее, как она читается?

if n & (n - 1)

Хочу побольше об этом узнать, можете дать название?
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547

ЦитатаСообщение от CyberGame Посмотреть сообщение

можете дать название?
Побитовое И чисел n и n - 1

Эксперт по компьютерным сетям

5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
а как же 0?
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547

ЦитатаСообщение от Jabbson Посмотреть сообщение

а как же 0?
Работает только для положительных целых чисел
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки
# Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки. #.

Проверить является ли число степенью тройки
def is_power_three(n): print(n) if n == 1: return 'Є степенем трійки' if n.

Проверить, является ли число a степенью числа b
Решите задачу одним циклом while, допускается применение условных операторов. Задано два числа a.

Цикл проверить, является ли число степенью числа 3
Дано целое число N>0, если оно является степенью числа 3 то вывести TRUE, если нет - FALSE

Проверить является ли число точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.

Проверить, является ли число точной степенью двойки
Здравствуйте, помогите пожалуйста решить задачу. Дано натуральное число N. Выведите слово YES.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *