Divide large number represented as string

13 Jul, 2022
Given a large number (represented as a string) which has to divide by another number (represented as int data type). The large number can be very large which does not even fit in long long in C++. The task is to find the division of these numbers.
Examples: 
Input : number  = 1260257
        divisor = 37
Output : 34061
(See below diagram)

Input : number  = 12313413534672234
        divisor = 754
Output : 16330787181262

Input : number  = 1248163264128256512
        divisor = 125
Output : 9985306113026052
We have already discussed Multiply Large Numbers represented as Strings.We use basic school mathematics as shown in below example.
As the dividend and result can be very large we store them in string. We first take digits which are divisible by number. After this take each digit and store result in string. 
Implementation:
C++
Java
Python3
C#
PHP
Javascript
// C++ program to implement division with large// number#include <bits/stdc++.h>using namespace std; // A function to perform division of large numbersstring longDivision(string number, int divisor){    // As result can be very large store it in string    string ans;     // Find prefix of number that is larger    // than divisor.    int idx = 0;    int temp = number[idx] - '0';    while (temp < divisor)        temp = temp * 10 + (number[++idx] - '0');     // Repeatedly divide divisor with temp. After    // every division, update temp to include one    // more digit.    while (number.size() > idx) {        // Store result in answer i.e. temp / divisor        ans += (temp / divisor) + '0';         // Take next digit of number        temp = (temp % divisor) * 10 + number[++idx] - '0';    }     // If divisor is greater than number    if (ans.length() == 0)        return "0";     // else return ans    return ans;} // Driver program to test longDivison()int main(){    string number = "1248163264128256512";    int divisor = 125;    cout << longDivision(number, divisor);    return 0;}
// Java program to implement division// with large numberclass GFG {    public static String longDivision(        String number,        int divisor)    {         // As result can be very        // large store it in string        // but since we need to modify        // it very often so using        // string builder        StringBuilder result            = new StringBuilder();         // We will be iterating        // the dividend so converting        // it to char array        char[] dividend            = number.toCharArray();         // Initially the carry        // would be zero        int carry = 0;         // Iterate the dividend        for (            int i = 0;            i < dividend.length; i++) {            // Prepare the number to            // be divided            int x                = carry * 10                  + Character.getNumericValue(                        dividend[i]);             // Append the result with            // partial quotient            result.append(x / divisor);             // Prepare the carry for            // the next Iteration            carry = x % divisor;        }         // Remove any leading zeros        for (            int i = 0;            i < result.length(); i++) {            if (                result.charAt(i) != '0') {                // Return the result                return result.substring(i);            }        }        // Return empty string        // if number is empty        return "";    }     // Driver code    public static void main(        String[] args)    {        String number            = "1248163264128256512";        int divisor = 125;        System.out.println(            longDivision(                number, divisor));    }} // This code is contributed by Saurabh321Gupta.
# Python3 program to implement division# with large numberimport math # A function to perform division of# large numbersdef longDivision(number, divisor):     # As result can be very large    # store it in string    ans = "";         # Find prefix of number that    # is larger than divisor.    idx = 0;    temp = ord(number[idx]) - ord('0');    while (temp < divisor):        temp = (temp * 10 + ord(number[idx + 1]) -                            ord('0'));        idx += 1;         idx += 1;     # Repeatedly divide divisor with temp.    # After every division, update temp to    # include one more digit.    while ((len(number)) > idx):                 # Store result in answer i.e. temp / divisor        ans += chr(math.floor(temp // divisor) + ord('0'));                 # Take next digit of number        temp = ((temp % divisor) * 10 + ord(number[idx]) -                                        ord('0'));        idx += 1;     ans += chr(math.floor(temp // divisor) + ord('0'));         # If divisor is greater than number    if (len(ans) == 0):        return "0";         # else return ans    return ans; # Driver Codenumber = "1248163264128256512";divisor = 125;print(longDivision(number, divisor));     # This code is contributed by mits
// C# program to implement division// with large numberusing System; class GFG {     // A function to perform division of large numbers    static string longDivision(string number, int divisor)    {        // As result can be very large store it in string        string ans = "";         // Find prefix of number that is larger        // than divisor.        int idx = 0;        int temp = (int)(number[idx] - '0');        while (temp < divisor) {            temp = temp * 10 + (int)(number[idx + 1] - '0');            idx++;        }        ++idx;         // Repeatedly divide divisor with temp. After        // every division, update temp to include one        // more digit.        while (number.Length > idx) {            // Store result in answer i.e. temp / divisor            ans += (char)(temp / divisor + '0');             // Take next digit of number            temp = (temp % divisor) * 10 + (int)(number[idx] - '0');            idx++;        }        ans += (char)(temp / divisor + '0');         // If divisor is greater than number        if (ans.Length == 0)            return "0";         // else return ans        return ans;    }     // Driver code    static void Main()    {        string number = "1248163264128256512";        int divisor = 125;        Console.WriteLine(longDivision(number, divisor));    }} // This code is contributed by mits
<?php// PHP program to implement division// with large number // A function to perform division of// large numbersfunction longDivision($number, $divisor){    // As result can be very large    // store it in string    $ans = "";         // Find prefix of number that is    // larger than divisor.    $idx = 0;    $temp = ord($number[$idx]) - 48;    while ($temp < $divisor)        $temp = $temp * 10 +            ord($number[++$idx]) - 48;         // Repeatedly divide divisor with temp.    // After every division, update temp to    // include one more digit.    ++$idx;    while (strlen($number) > $idx)    {        // Store result in answer i.e. temp / divisor        $ans .= chr((int)($temp / $divisor) + 48);                 // Take next digit of number        $temp = ($temp % $divisor) * 10 +             ord($number[$idx]) - 48;        ++$idx;    }    $ans .= chr((int)($temp / $divisor) + 48);         // If divisor is greater than number    if (strlen($ans) == 0)        return "0";         // else return ans    return $ans;} // Driver Code$number = "1248163264128256512";$divisor = 125;print(longDivision($number, $divisor)); // This code is contributed by mits?>
<script> // Javascript program to implement division// with large number              function longDivision(number,divisor)    {        // As result can be very        // large store it in string        // but since we need to modify        // it very often so using        // string builder        let ans="";           // We will be iterating        // the dividend so converting        // it to char array           // Initially the carry        // would be zero        let idx = 0;          let temp=number[idx]-'0';        while (temp < divisor)        {            temp = (temp * 10 +            (number[idx + 1]).charCodeAt(0) -                   ('0').charCodeAt(0));            idx += 1;        }        idx += 1;                 while(number.length>idx)        {            // Store result in answer i.e. temp / divisor            ans += String.fromCharCode            (Math.floor(temp / divisor) +            ('0').charCodeAt(0));                       // Take next digit of number            temp = ((temp % divisor) * 10 +            (number[idx]).charCodeAt(0) -                  ('0').charCodeAt(0));            idx += 1;        }                 ans += String.fromCharCode        (Math.floor(temp / divisor) +        ('0').charCodeAt(0));                 //If divisor is greater than number        if(ans.length==0)            return "0";        //else return ans        return ans;    }         // Driver Code    let number = "1248163264128256512";    let divisor = 125;    document.write(longDivision(                number, divisor));         // This code is contributed    // by avanitrachhadiya2155     </script>
9985306113026052
Time Complexity: O(n2!), where n denoting length of string.Auxiliary Space: O(n).
This article is contributed by nuclode. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
Mithun Kumar
ukasp
saurabh321gupta
avanitrachhadiya2155
anandkumarshivam2266
hardikkoriintern
large-numbers
Samsung
Mathematical
Strings
Samsung
Strings
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.