Open In App

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

Last Updated : 26 May, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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++
// C++ implementation to check whether n
// is divisible by pow(2, m)
#include <bits/stdc++.h>

using namespace std;

// function to check 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;
}
Java
// JAVA Code for Check if n is divisible  
// by power of 2 without using arithmetic 
// operators
import java.util.*;

class GFG {
    
    // function to check 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.
Python3
# Python3 implementation to check 
# whether n is divisible by pow(2, m)

# function to check 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".
C#
// C# Code for Check if n is divisible
// by power of 2 without using arithmetic
// operators
using System;

class GFG {

    // function to check 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
PHP
<?php
// PHP implementation to check whether 
// n is divisible by pow(2, m)

// function to check 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
?>
JavaScript
<script>

// JavaScript implementation to check whether n 
// is divisible by pow(2, m) 

// function to check 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 program to test above 

    let n = 8, m = 2; 
    if (isDivBy2PowerM(n, m)) 
        document.write("Yes"); 
    else
        document.write("No"); 

// This code is contributed by Surbhi Tyagi.

</script>

Output: 

Yes

Time Complexity : O(1)

Auxiliary Space: O(1)


 


Article Tags :
Practice Tags :

Similar Reads