C++ program to divide a number by 3 without using *, / , +, -, % operators
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
- 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 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
- 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
CPP
#include <bits/stdc++.h>
using namespace std;
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;
}
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;
}
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
Share your thoughts in the comments
Please Login to comment...