Рубрики

Программа Python, чтобы определить, является ли нет степенью двойки

Получив положительное целое число, напишите функцию, чтобы определить, является ли она степенью двойки или нет.

Примеры :

Input : n = 4
Output : Yes
22 = 4

Input : n = 7
Output : No

Input : n = 32
Output : Yes
25 = 32

1. Простой метод для этого — просто взять журнал числа на основе 2, и если вы получите целое число, то число будет степенью 2.

python3

# Python3 Программа для поиска
# есть ли нет
# сила двух

import math

  
# Функция для проверки
# Журнал базы 2

def Log2(x):

    return (math.log10(x) / 

            math.log10(2));

  
# Функция для проверки
# если х - степень 2

def isPowerOfTwo(n):

    return (math.ceil(Log2(n)) == math.floor(Log2(n)));

  
Код водителя

if(isPowerOfTwo(31)):

    print("Yes");

else:

    print("No");

  

if(isPowerOfTwo(64)):

    print("Yes");

else:

    print("No");

      
# Этот код добавлен
# по митсам

Выход:

No
Yes

2. Другое решение состоит в том, чтобы продолжать делить число на два, т.е. делать n = n / 2 итеративно. На любой итерации, если n% 2 становится ненулевым и n не равно 1, то n не является степенью 2. Если n становится 1, то это степень 2.

python3

# Программа Python для проверки, если дано
число является степенью 2 или нет

  
# Функция, чтобы проверить, является ли x степенью 2

def isPowerOfTwo(n):

    if (n == 0):

        return False

    while (n != 1):

            if (n % 2 != 0):

                return False

            n = n // 2

              

    return True

  
# Код драйвера

if(isPowerOfTwo(31)):

    print('Yes')

else:

    print('No')

if(isPowerOfTwo(64)):

    print('Yes')

else:

    print('No')

  
# Этот код предоставлен Danish Raza

Выход:

No
Yes

3. Все степени двух чисел имеют только один установленный бит. Так что считай нет. из установленных битов, и если вы получаете 1, то число является степенью 2. Пожалуйста, смотрите Количество установленных бит в целом числе для подсчета установленных бит.

4. Если мы вычтем степень 2 чисел на 1, тогда все неустановленные биты после единственного установленного бита станут установленными; и установленный бит становится неустановленным.

Например, для 4 (100) и 16 (10000) мы получим следующее после вычитания 1
3 -> 011
15 -> 01111

Таким образом, если число n является степенью 2, то поразрядно & n и n-1 будут равны нулю. Мы можем сказать, что n является степенью 2 или не основано на значении n & (n-1). Выражение n & (n-1) не будет работать, когда n равно 0. Для обработки этого случая наше выражение также станет n & (! N & (n-1)) (благодаря http://espressocode.top/program-to -find-ли-нет-не-сила-два / Мохаммед за добавление этого случая).
Ниже приведена реализация этого метода.

питон

# Программа Python для проверки, если дано
число является степенью 2 или нет

  
# Функция, чтобы проверить, является ли x степенью 2

def isPowerOfTwo (x):

  

    # Первый х в приведенном ниже выражении

    # для случая, когда х равен 0

    return (x and (not(x & (x - 1))) )

  
# Код драйвера

if(isPowerOfTwo(31)):

    print('Yes')

else:

    print('No')

      

if(isPowerOfTwo(64)):

    print('Yes')

else:

    print('No')

      
# Этот код предоставлен Danish Raza

Выход:

No
Yes

Пожалуйста, обратитесь к полной статье о Программе, чтобы узнать, является ли «нет» степенью двух, для более подробной информации!

Рекомендуемые посты:

Программа Python, чтобы определить, является ли нет степенью двойки

0.00 (0%) 0 votes