For a given positive number we need to divide a number by 3 without using any of these *, /, +, – % operators
Input : 48 Output : 16 Input : 16 Output : 5
- Take a number num, sum = 0
- while(num>3), shift the number left by 2 bits and sum = add(num >> 2, sum). Create a function add(x, y) for adding two number by bitwise opreator
- Take x, y
- run a do while loop till a is not zero
- a = x & y, b = x ^ y;, y = b;
- after terminating loop return value of b which gives sum of x and y
- Take bitwise AND of num with 3
for new num = add( num >> 2, num & 3)
- After terminating while loop print the value of sum which give final result .
For example if your number is 10 then convert to binary 10 => 00001010
If 10 > 3 then shift the binary number 2 bits, Now num will be 00000010 i.e, 2
Now sum will be 2
num = (shift the number by 2 bits) + (number BITWISE AND 3)
num = 2+2
Now the number will be 4 then, 4 > 3 => true so loop will be repeated
4 => 00000100 then shift the binary number 2 bits
Now sum = 2 + 1 ie, sum = 3 (this value is returned)
num = (shift the number(00000100) by 2 bits) + (number BITWISE AND 3)
num = 1 + 0
ie remainder = 1
The number divided by 3 is 16
This article is contributed by DANISH_RAZA. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.