Check if n is divisible by power of 2 without using arithmetic operators

Given two positive integers n and m. The problem is to check whether n is divisible by 2m or not without using arithmetic operators.

Examples:

Input : n = 8, m = 2
Output : Yes

Input : n = 14, m = 3
Output : No



Approach: If a number is divisible by 2 then it has its least significant bit (LSB) set to 0, if divisible by 4 then two LSB’s set to 0, if by 8 then three LSB’s set to 0 and so on. Keeping this in mind, a number n is divisible by 2m if (n & ((1 << m) – 1)) is equal to 0 else not.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to chech whether n
// is divisible by pow(2, m)
#include <bits/stdc++.h>
  
using namespace std;
  
// function to chech whether n
// is divisible by pow(2, m)
bool isDivBy2PowerM(unsigned int n,
                    unsigned int m)
{
    // if expression results to 0, then
    // n is divisible by pow(2, m)
    if ((n & ((1 << m) - 1)) == 0)
        return true;
  
    // n is not divisible
    return false;
}
  
// Driver program to test above
int main()
{
    unsigned int n = 8, m = 2;
    if (isDivBy2PowerM(n, m))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// JAVA Code for Check if n is divisible  
// by power of 2 without using arithmetic 
// operators
import java.util.*;
  
class GFG {
      
    // function to chech whether n
    // is divisible by pow(2, m)
    static boolean isDivBy2PowerM(int n,
                                    int m)
    {
        // if expression results to 0, then
        // n is divisible by pow(2, m)
        if ((n & ((1 << m) - 1)) == 0)
            return true;
       
        // n is not divisible
        return false;
    }
      
    /* Driver program to test above function */
    public static void main(String[] args) 
    {
            int n = 8, m = 2;
              
            if (isDivBy2PowerM(n, m))
                System.out.println("Yes");
            else
                System.out.println("No");
    }
}
  
// This code is contributed by Arnav Kr. Mandal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to chech 
# whether n is divisible by pow(2, m)
  
# function to chech whether n
# is divisible by pow(2, m)
def isDivBy2PowerM (n, m):
      
    # if expression results to 0, then
    # n is divisible by pow(2, m)
    if (n & ((1 << m) - 1)) == 0:
        return True
          
    # n is not divisible
    return False
  
# Driver program to test above
n = 8
m = 2
if isDivBy2PowerM(n, m):
    print("Yes")
else:
    print( "No")
      
# This code is contributed by "Sharad_Bhardwaj".

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Code for Check if n is divisible
// by power of 2 without using arithmetic
// operators
using System;
  
class GFG {
  
    // function to chech whether n
    // is divisible by pow(2, m)
    static bool isDivBy2PowerM(int n, int m)
    {
        // if expression results to 0, then
        // n is divisible by pow(2, m)
        if ((n & ((1 << m) - 1)) == 0)
            return true;
  
        // n is not divisible
        return false;
    }
  
    /* Driver program to test above function */
    public static void Main()
    {
        int n = 8, m = 2;
  
        if (isDivBy2PowerM(n, m))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
  
// This code is contributed by Sam007

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation to chech whether 
// n is divisible by pow(2, m)
  
// function to chech whether n
// is divisible by pow(2, m)
function isDivBy2PowerM($n, $m)
{
      
    // if expression results to 0, then
    // n is divisible by pow(2, m)
    if (($n & ((1 << $m) - 1)) == 0)
        return true;
  
    // n is not divisible
    return false;
}
  
    // Driver Code
    $n = 8;
    $m = 2;
    if (isDivBy2PowerM($n, $m))
        echo "Yes";
    else
        echo "No";
  
// This code is contributed by ajit
?>

chevron_right



Output:

Yes


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : jit_t



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.