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++
// 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)