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)
Recommended Articles