Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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 <bits/stdc++.h>
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

 

 



Last Updated : 07 Sep, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads