Рубрики

Программа, чтобы найти, является ли нет это сила двух

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

Примеры :

Input : n = 4
Output : Yes
22 = 4

Input : n = 7
Output : No

Input : n = 32
Output : Yes
25 = 32

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

C ++

// C ++ Программа для поиска
// нет - сила двух
#include<bits/stdc++.h>

using namespace std;

  
// Функция для проверки, является ли x степенью 2

bool isPowerOfTwo(int n)

{

   if(n==0)

   return false;

  

   return (ceil(log2(n)) == floor(log2(n)));

}

  
// Драйвер программы

int main()

{

    isPowerOfTwo(31)? cout<<"Yes"<<endl: cout<<"No"<<endl;

    isPowerOfTwo(64)? cout<<"Yes"<<endl: cout<<"No"<<endl;

  

    return 0;

}

  
// Этот код предоставлен Surendra_Gangwar

С

// C Программа, чтобы найти ли
// нет - сила двух
#include<stdio.h>
#include<stdbool.h>
#include<math.h>

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

bool isPowerOfTwo(int n)

{

   if(n==0)

   return false;

  

   return (ceil(log2(n)) == floor(log2(n)));

}

  
// Драйвер программы

int main()

{

    isPowerOfTwo(31)? printf("Yes\n"): printf("No\n");

    isPowerOfTwo(64)? printf("Yes\n"): printf("No\n");

    return 0;

}

  
// Этот код предоставлен bibhudhendra

Джава

// Java-программа, чтобы найти ли
// нет - сила двух

class GFG

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

static boolean isPowerOfTwo(int n)

{

    if(n==0)

    return false;

  

return (int)(Math.ceil((Math.log(n) / Math.log(2)))) == 

       (int)(Math.floor(((Math.log(n) / Math.log(2)))));

}

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

public static void main(String[] args)

{

    if(isPowerOfTwo(31))

    System.out.println("Yes");

    else

    System.out.println("No");

      

    if(isPowerOfTwo(64))

    System.out.println("Yes");

    else

    System.out.println("No");

}
}

  
// Этот код предоставлен mits

python3

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

import math

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

def Log2(x):

    if x == 0:

        return false;

  

    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");

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

C #

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

using System;

  

class GFG

{

      
/ * Функция, чтобы проверить, если

   х является степенью 2 * /

static bool isPowerOfTwo(int n)

{

  

    if(n==0)

     return false;

  

    return (int)(Math.Ceiling((Math.Log(n) / 

                               Math.Log(2)))) ==

           (int)(Math.Floor(((Math.Log(n) / 

                              Math.Log(2)))));

}

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

public static void Main()

{

    if(isPowerOfTwo(31))

        Console.WriteLine("Yes");

    else

        Console.WriteLine("No");

      

    if(isPowerOfTwo(64))

        Console.WriteLine("Yes");

    else

        Console.WriteLine("No");

}
}

  
// Этот код добавлен
// Аканкша Рай (Abby_akku)

PHP

<?php
// PHP программа для поиска
// есть ли нет
// сила двух

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

function Log2($x)

{

    return (log10($x) / 

            log10(2));

}

  

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

function isPowerOfTwo($n)

{

    return (ceil(Log2($n)) == 

            floor(Log2($n)));

}

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

if(isPowerOfTwo(31))

echo "Yes\n";

else

echo "No\n";

  

if(isPowerOfTwo(64))

echo "Yes\n";

else

echo "No\n";

      
// Этот код добавлен
// Sam007
?>


Выход:

No
Yes

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

C ++

#include <bits/stdc++.h>

using namespace std;

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

bool isPowerOfTwo(int n) 

    if (n == 0) 

        return 0; 

    while (n != 1) 

    

        if (n%2 != 0) 

            return 0; 

        n = n/2; 

    

    return 1; 

  
/ * Код водителя * /

int main() 

    isPowerOfTwo(31)? cout<<"Yes\n": cout<<"No\n"

    isPowerOfTwo(64)? cout<<"Yes\n": cout<<"No\n"

    return 0; 

  
// Этот код предоставлен rathbhupendra

С

#include<stdio.h>
#include<stdbool.h>

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

bool isPowerOfTwo(int n)

{

  if (n == 0)

    return 0;

  while (n != 1)

  {

      if (n%2 != 0)

         return 0;

      n = n/2;

  }

  return 1;

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

  isPowerOfTwo(31)? printf("Yes\n"): printf("No\n");

  isPowerOfTwo(64)? printf("Yes\n"): printf("No\n");

  return 0;

}

Джава

// Java-программа для поиска
// нет - сила двух

import java.io.*;

  

class GFG {

  

    // Функция для проверки

    // х - степень 2

    static boolean isPowerOfTwo(int n)

    {

        if (n == 0)

            return false;

          

        while (n != 1)

        {

            if (n % 2 != 0)

                return false;

            n = n / 2;

        }

        return true;

    }

  

    // Драйвер программы

    public static void main(String args[])

    {

        if (isPowerOfTwo(31))

            System.out.println("Yes");

        else

            System.out.println("No");

  

        if (isPowerOfTwo(64))

            System.out.println("Yes");

        else

            System.out.println("No");

    }

}

  
// Этот код предоставлен Никитой Тивари.

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

C #

// C # программа для поиска
// нет - сила двух

using System;

  

class GFG

{

      

    // Функция для проверки

    // х - степень 2

    static bool isPowerOfTwo(int n)

    {

        if (n == 0)

            return false;

          

        while (n != 1) {

            if (n % 2 != 0)

                return false;

                  

            n = n / 2;

        }

        return true;

    }

  

    // Драйвер программы

    public static void Main()

    {

        Console.WriteLine(isPowerOfTwo(31) ? "Yes" : "No");

        Console.WriteLine(isPowerOfTwo(64) ? "Yes" : "No");

  

    }

}

  
// Этот код предоставлен Sam007

PHP

<?php

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

function isPowerOfTwo($n)

{

if ($n == 0)

    return 0;

while ($n != 1)

{

    if ($n % 2 != 0)

        return 0;

    $n = $n / 2;

}

return 1;

}

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

if(isPowerOfTwo(31))

    echo "Yes\n";

else

    echo "No\n";

  

if(isPowerOfTwo(64))

    echo "Yes\n";

else

    echo "No\n";

  
// Этот код добавлен
// Sam007
?>


Выход :

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-ли-нет-не-сила-два / Мохаммед за добавление этого случая).
Ниже приведена реализация этого метода.

C ++

#include <bits/stdc++.h>

using namespace std;

#define bool int 

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

bool isPowerOfTwo (int x) 

    / * Первый x в приведенном ниже выражении относится к случаю, когда x равен 0 * /

    return x && (!(x&(x-1))); 

  
/ * Код водителя * /

int main() 

    isPowerOfTwo(31)? cout<<"Yes\n": cout<<"No\n"

    isPowerOfTwo(64)? cout<<"Yes\n": cout<<"No\n"

    return 0; 

  
// Этот код предоставлен rathbhupendra

С

#include<stdio.h>
#define bool int

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

bool isPowerOfTwo (int x)

{

  / * Первый x в приведенном ниже выражении относится к случаю, когда x равен 0 * /

  return x && (!(x&(x-1)));

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

  isPowerOfTwo(31)? printf("Yes\n"): printf("No\n");

  isPowerOfTwo(64)? printf("Yes\n"): printf("No\n");

  return 0;

}

Джава

// Java-программа для эффективного
// проверка мощности на 2

  

class Test

{

    / * Метод проверки, если х является степенью 2 * /

    static boolean isPowerOfTwo (int x)

    {

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

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

        return x!=0 && ((x&(x-1)) == 0);

          

    }

      

    // Метод драйвера

    public static void main(String[] args) 

    {

         System.out.println(isPowerOfTwo(31) ? "Yes" : "No");

         System.out.println(isPowerOfTwo(64) ? "Yes" : "No");

          

    }

}
// Эта программа предоставлена Гауравом Миглани

питон

# Программа 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

C #

// C # программа для эффективного
// проверка мощности на 2

using System;

  

class GFG

{

    // Метод, чтобы проверить, является ли x степенью 2

    static bool isPowerOfTwo (int x)

    {

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

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

        return x != 0 && ((x & (x - 1)) == 0);

          

    }

      

    // Метод драйвера

    public static void Main() 

    {

        Console.WriteLine(isPowerOfTwo(31) ? "Yes" : "No");

        Console.WriteLine(isPowerOfTwo(64) ? "Yes" : "No");

          

    }

}

  
// Этот код предоставлен Sam007

PHP

<?php
// PHP программа для эффективного
// проверка мощности на 2

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

function isPowerOfTwo ($x)

{
// Первый х в приведенном ниже выражении
// для случая, когда х равен 0

return $x && (!($x & ($x - 1)));

}

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

if(isPowerOfTwo(31))

    echo "Yes\n" ;

else

    echo "No\n";

  

if(isPowerOfTwo(64))

    echo "Yes\n" ;

else

    echo "No\n";

          
// Этот код предоставлен Sam007
?>


Выход :

No
Yes

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

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

Программа, чтобы найти, является ли нет это сила двух

0.00 (0%) 0 votes