# C++ program to divide a number by 3 without using *, / , +, -, % operators

• Difficulty Level : Hard
• Last Updated : 07 Sep, 2021

For a given positive number we need to divide a number by 3 without using any of these *, /, +, – % operators
Examples:

```Input : 48
Output : 16

Input : 16
Output : 5 ```

Algorithm

1. Take a number num, sum = 0
2. 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 operator
• 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
3. Take bitwise AND of num with 3
for new num = add( num >> 2, num & 3)
4. 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

## CPP

 `// C++ program for divided a number by``// 3 without using operator``#include ``using` `namespace` `std;` `// A function to add 2 numbers without using +``int` `add(``int` `x, ``int` `y)``{``    ``int` `a, b;``    ``do` `{``        ``a = x & y;``        ``b = x ^ y;``        ``x = a << 1;``        ``y = b;``    ``} ``while` `(a);` `    ``return` `b;``}` `// Function to divide by 3``int` `divideby3(``int` `num)``{``    ``int` `sum = 0;` `    ``while` `(num > 3) {``        ``sum = add(num >> 2, sum);``        ``num = add(num >> 2, num & 3);``    ``}` `    ``if` `(num == 3)``        ``sum = add(sum, 1);` `    ``return` `sum;``}` `// Driver program``int` `main(``void``)``{``    ``int` `num = 48;``    ``cout << ``"The number divided by 3 is "``;``    ``cout << divideby3(num);` `    ``return` `0;``}`
Output:
`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 write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.