Divide two integers without using multiplication, division and mod operator | Set2 - GeeksforGeeks

19 Apr, 2021
Given two integers say a and b. Find the quotient after dividing a by b without using multiplication, division and mod operator.Examples:  
Input: a = 10, b = 3
Output: 3

Input: a = 43, b = -8
Output: -5
 
This problem has been already discussed here. In this post, a different approach is discussed.Approach :  
Let a/b = c.Take log on both sideslog(a) – log(b) = log(c)Now Log of RHS can be written as exp in LHSFinal formula is : exp(log(a) – log(b)) = c
Let a/b = c.
Take log on both sides
log(a) – log(b) = log(c)
Now Log of RHS can be written as exp in LHS
Final formula is : exp(log(a) – log(b)) = c
 
C++
Java
Python3
C#
PHP
Javascript
// C++ program for above approach#include <bits/stdc++.h>using namespace std; // Returns the quotient of dividend/divisor.void Divide(int a, int b){    long long dividend = (long long)a;    long long divisor = (long long)b;     // Calculate sign of divisor i.e.,    // sign will be negative only if    // either one of them is negative    // otherwise it will be positive     long long sign = (dividend < 0) ^ (divisor < 0) ? -1 : 1;     // Remove signs of dividend and divisor    dividend = abs(dividend);    divisor = abs(divisor);     // Zero division Exception.    if (divisor == 0) {        cout << "Cannot Divide by 0" << endl;        return;    }     if (dividend == 0) {        cout << a << " / " << b << " is equal to : "             << 0 << endl;        return;    }     if (divisor == 1) {        cout << a << " / " << b << " is equal to : "             << sign * dividend << endl;        return;    }     // Using Formula derived above.    cout << a << " / " << b << " is equal to : "         << sign * exp(log(dividend) - log(divisor))         << endl;} // Drivers codeint main(){    int a = 10, b = 5;     Divide(a, b);     a = 49, b = -7;    Divide(a, b);     return 0;}
// Java program for// above approachimport java.io.*; class GFG{static void Divide(int a, int b){    long dividend = (long)a;    long divisor = (long)b;     // Calculate sign of divisor i.e.,    // sign will be negative only if    // either one of them is negative    // otherwise it will be positive     long sign = (dividend < 0) ^                (divisor < 0) ? -1 : 1;     // Remove signs of    // dividend and divisor    dividend = Math.abs(dividend);    divisor = Math.abs(divisor);     // Zero division Exception.    if (divisor == 0)    {        System.out.println("Cannot Divide by 0");        return;    }     if (dividend == 0)    {        System.out.println(a + " / " + b +                            " is equal to : " + 0);        return;    }     if (divisor == 1)    {        System.out.println(a + " / " + b +                           " is equal to : " +                             sign * dividend);        return;    }     // Using Formula    // derived above.    System.out.println(a + " / " + b + " is equal to : " +                                         Math.floor(sign *                            (Math.exp(Math.log(dividend) -                             Math.log(divisor)))));} // Driver codepublic static void main (String[] args){int a = 10, b = 5; Divide(a, b); a = 49; b = -7;Divide(a, b);}} // This code is contributed// by shiv_bhakt.
# Python3 program# for above approachimport mathdef Divide(a, b):    dividend = a;    divisor = b;     # Calculate sign of divisor    # i.e., sign will be negative    # only if either one of them    # is negative otherwise it    # will be positive     sign = -1 if ((dividend < 0) ^                  (divisor < 0)) else 1;     # Remove signs of    # dividend and divisor    dividend = abs(dividend);    divisor = abs(divisor);     # Zero division Exception.    if (divisor == 0):        print("Cannot Divide by 0");     if (dividend == 0):        print(a, "/", b, "is equal to :", 0);     if (divisor == 1):        print(a, "/", b, "is equal to :",                      (sign * dividend));     # Using Formula    # derived above.    print(a, "/", b, "is equal to :",          math.floor(sign * math.exp(math.log(dividend) -                                     math.log(divisor)))); # Driver codea = 10;b = 5; Divide(a, b); a = 49;b = -7;Divide(a, b); # This code is contributed# by mits
// C# program for// above approachusing System; class GFG{static void Divide(int a, int b){    long dividend = (long)a;    long divisor = (long)b;     // Calculate sign of divisor    // i.e., sign will be negative    // only if either one of them    // is negative otherwise it    // will be positive     long sign = (dividend < 0) ^                (divisor < 0) ? -1 : 1;     // Remove signs of    // dividend and divisor    dividend = Math.Abs(dividend);    divisor = Math.Abs(divisor);     // Zero division Exception.    if (divisor == 0)    {        Console.WriteLine("Cannot Divide by 0");        return;    }     if (dividend == 0)    {        Console.WriteLine(a + " / " + b +                          " is equal to : " + 0);        return;    }     if (divisor == 1)    {        Console.WriteLine(a + " / " + b +                          " is equal to : " +                            sign * dividend);        return;    }     // Using Formula    // derived above.    Console.WriteLine(a + " / " + b + " is equal to : " +                                        Math.Floor(sign *                           (Math.Exp(Math.Log(dividend) -                                   Math.Log(divisor)))));} // Driver codepublic static void Main (){    int a = 10, b = 5;         Divide(a, b);         a = 49; b = -7;    Divide(a, b);}} // This code is contributed// by shiv_bhakt.
<?php// PHP program for above approach function Divide($a, $b){    $dividend = $a;    $divisor = $b;     // Calculate sign of divisor    // i.e., sign will be negative    // only if either one of them    // is negative otherwise it    // will be positive     $sign = ($dividend < 0) ^            ($divisor < 0) ? -1 : 1;     // Remove signs of    // dividend and divisor    $dividend = abs($dividend);    $divisor = abs($divisor);     // Zero division Exception.    if ($divisor == 0)    {        echo "Cannot Divide by 0";        echo"";    }     if ($dividend == 0)    {        echo $a , " / " , $b ,             " is equal to : " , 0 ;            echo "";    }     if ($divisor == 1)    {        echo $a , " / " , $b ,             " is equal to : ",             $sign * $dividend. "\n";        echo "";    }     // Using Formula    // derived above.    echo $a , " / " , $b ,         " is equal to : " ,         $sign * exp(log($dividend) -                      log($divisor)). "\n";        echo "";} // Driver code$a = 10;$b = 5; Divide($a, $b); $a = 49;$b = -7;Divide($a, $b); // This code is contributed// by shiv_bhakt.?>
<script> // Javascript program for// above approach function Divide(a, b){    var dividend = a;    var divisor = b;     // Calculate sign of divisor i.e.,    // sign will be negative only if    // either one of them is negative    // otherwise it will be positive    var sign = (dividend < 0) ^                (divisor < 0) ? -1 : 1;     // Remove signs of    // dividend and divisor    dividend = Math.abs(dividend);    divisor = Math.abs(divisor);     // Zero division Exception.    if (divisor == 0)    {        document.write("Cannot Divide by 0");        return;    }     if (dividend == 0)    {        document.write(a + " / " + b +               " is equal to : " + 0 + "<br>");        return;    }     if (divisor == 1)    {        System.out.println(a + " / " + b +                           " is equal to : " +                             sign * dividend + "<br>");        return;    }     // Using Formula    // derived above.    document.write(a + " / " + b + " is equal to : " +                           Math.floor(sign *                          (Math.exp(Math.log(dividend) -                          Math.log(divisor)))) + "<br>");} // Driver Codevar a = 10, b = 5; Divide(a, b); a = 49; b = -7;Divide(a, b); // This code is contributed by Kirti </script>
10 / 5 is equal to : 2
49 / -7 is equal to : -7
 
Vishal_Khoda
Mithun Kumar
Kirti_Mangal
maths-log
C++ Programs
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C++ Program for QuickSort
cin in C++
Count substrings that contain all vowels | SET 2
Generics in C++
Shallow Copy and Deep Copy in C++
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7