Open In App
Related Articles

Program to find remainder without using modulo or % operator

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Given two numbers ‘num’ and ‘divisor’, find remainder when ‘num’ is divided by ‘divisor’. The use of modulo or % operator is not allowed.
Examples : 

Input:  num = 100, divisor = 7
Output: 2

Input:  num = 30, divisor = 9
Output: 3

Method 1 :

C++

// C++ program to find remainder without using
// modulo operator
#include <iostream>
using namespace std;
 
// This function returns remainder of num/divisor
// without using % (modulo) operator
int getRemainder(int num, int divisor)
{
    return (num - divisor * (num / divisor));
}
 
// Driver program to test above functions
int main()
{
    // cout << 100 %0;
    cout << getRemainder(100, 7);
    return 0;
}

                    

Java

// Java program to find remainder without
// using modulo operator
import java.io.*;
 
class GFG {
 
    // This function returns remainder of
    // num/divisor without using % (modulo)
    // operator
    static int getRemainder(int num, int divisor)
    {
        return (num - divisor * (num / divisor));
    }
 
    // Driver program to test above functions
    public static void main(String[] args)
    {
 
        // print 100 % 0;
        System.out.println(getRemainder(100, 7));
    }
}
 
// This code is contributed by Sam007.

                    

Python3

# Python program to find remainder
# without using modulo operator
 
# This function returns remainder of
# num / divisor without using % (modulo)
# operator
def getRemainder(num, divisor):
    return (num - divisor * (num // divisor))
 
 
# Driver program to test above functions
num = 100
divisor = 7
print(getRemainder(num, divisor))
 
# This code is contributed by Danish Raza

                    

C#

// C# program to find remainder without using
// modulo operator
using System;
 
class GFG {
    // This function returns remainder of
    // num/divisor without using %
    // (modulo) operator
    static int getRemainder(int num, int divisor)
    {
        return (num - divisor * (num / divisor));
    }
 
    // Driver program to test above functions
    public static void Main()
    {
 
        // print 100 % 0;
        Console.Write(getRemainder(100, 7));
    }
}
 
// This code is contributed by Sam007.

                    

PHP

<?php
// PHP program to find remainder
// without using modulo operator
 
// This function returns remainder
// of num/divisor without using
// % (modulo) operator
function getRemainder($num, $divisor)
{
    $t = ($num - $divisor *
         (int)($num / $divisor));
    return $t;
}
 
// Driver Code
echo getRemainder(100, 7);
 
// This code is contributed by ajit
?>

                    

Javascript

<script>
// Javascript program to find remainder
// without using modulo operator
 
// This function returns remainder
// of num/divisor without using
// % (modulo) operator
function getRemainder(num, divisor)
{
    let t = (num - divisor *
         parseInt(num / divisor));
    return t;
}
 
// Driver Code
document.write(getRemainder(100, 7));
 
// This code is contributed by _saurabh_jaiswal
</script>

                    

Output : 

2

Time Complexity: O(1) 

Auxiliary Space: O(1)
This method is contributed by Bishal Kumar Dubey
 

Method 2


The idea is simple, we run a loop to find the largest multiple of ‘divisor’ that is smaller than or equal to ‘num’. Once we find such a multiple, we subtract the multiple from ‘num’ to find the divisor.
Following is the implementation of above idea. Thanks to eleventyone for suggesting this solution in a comment. 
 

C++

// C++ program to find remainder without using modulo operator
#include <iostream>
using namespace std;
 
// This function returns remainder of num/divisor without
// using % (modulo) operator
int getRemainder(int num, int divisor)
{
    // Handle divisor equals to 0 case
    if (divisor == 0) {
        cout << "Error: divisor can't be zero \n";
        return -1;
    }
 
    // Handle negative values
    if (divisor < 0)
        divisor = -divisor;
    if (num < 0)
        num = -num;
 
    // Find the largest product of 'divisor' that is smaller
    // than or equal to 'num'
    int i = 1;
    int product = 0;
    while (product <= num) {
        product = divisor * i;
        i++;
    }
 
    // return remainder
    return num - (product - divisor);
}
 
// Driver program to test above functions
int main()
{
    // cout << 100 %0;
    cout << getRemainder(100, 7);
    return 0;
}

                    

Java

// Java program to find remainder without
// using modulo operator
import java.io.*;
 
class GFG {
 
    // This function returns remainder
    // of num/divisor without using %
    // (modulo) operator
    static int getRemainder(int num, int divisor)
    {
 
        // Handle divisor equals to 0 case
        if (divisor == 0) {
            System.out.println("Error: divisor "
                               + "can't be zero \n");
            return -1;
        }
 
        // Handle negative values
        if (divisor < 0)
            divisor = -divisor;
        if (num < 0)
            num = -num;
 
        // Find the largest product of 'divisor'
        // that is smaller than or equal to 'num'
        int i = 1;
        int product = 0;
        while (product <= num) {
            product = divisor * i;
            i++;
        }
 
        // return remainder
        return num - (product - divisor);
    }
 
    // Driver program to test above functions
    public static void main(String[] args)
    {
 
        // print 100 % 0;
        System.out.println(getRemainder(100, 7));
    }
}
 
// This code is contributed by Sam007.

                    

Python3

# Python program to find remainder without
# using modulo operator. This function
# returns remainder of num / divisor without
# using % (modulo) operator
 
def getRemainder(num, divisor):
 
    # Handle divisor equals to 0 case
    if (divisor == 0):
        return False
 
    # Handle negative values
    if (divisor < 0):
        divisor = -divisor
    if (num < 0):
        num = -num
 
    # Find the largest product of 'divisor'
    # that is smaller than or equal to 'num'
    i = 1
    product = 0
    while (product <= num):
            product = divisor * i
            i += 1
    # return remainder
    return num - (product - divisor)
 
# Driver program to test above functions
num = 100
divisor = 7
print(getRemainder(num, divisor))
 
# This code is contributed by Danish Raza

                    

C#

// C# program to find remainder without
// using modulo operator
using System;
 
class GFG {
 
    // This function returns remainder
    // of num/divisor without using %
    // (modulo) operator
    static int getRemainder(int num, int divisor)
    {
 
        // Handle divisor equals to 0 case
        if (divisor == 0) {
            Console.WriteLine("Error: divisor "
                              + "can't be zero \n");
            return -1;
        }
 
        // Handle negative values
        if (divisor < 0)
            divisor = -divisor;
        if (num < 0)
            num = -num;
 
        // Find the largest product of 'divisor'
        // that is smaller than or equal to 'num'
        int i = 1;
        int product = 0;
        while (product <= num) {
            product = divisor * i;
            i++;
        }
 
        // return remainder
        return num - (product - divisor);
    }
 
    // Driver program to test above functions
    public static void Main()
    {
 
        // print 100 %0;
        Console.Write(getRemainder(100, 7));
    }
}
 
// This code is contributed by Sam007.

                    

PHP

<?php
 
// php program to find remainder without
// using modulo operator
 
// This function returns remainder of
// num/divisor without using % (modulo)
// operator
 
function getRemainder($num, $divisor)
{
     
    // Handle divisor equals to 0 case
    if ($divisor == 0)
    {
        echo "Error: divisor can't be zero \n";
        return -1;
    }
 
    // Handle negative values
    if ($divisor < 0) $divisor = -$divisor;
    if ($num < 0)     $num = -$num;
 
    // Find the largest product of 'divisor'
    // that is smaller than or equal to 'num'
    $i = 1;
    $product = 0;
    while ($product <= $num)
    {
        $product = $divisor * $i;
        $i++;
    }
 
    // return remainder
    return $num - ($product - $divisor);
}
 
// Driver program to test above functions
echo getRemainder(100, 7);
 
// This code is contributed by ajit.
?>

                    

Javascript

// Javascript program to find remainder without
// using modulo operator
 
// This function returns remainder of
// num/divisor without using % (modulo)
// operator
 
function getRemainder(num, divisor)
{
     
    // Handle divisor equals to 0 case
    if (divisor == 0)
    {
        document.write("Error: divisor can't be zero <br>");
        return -1;
    }
 
    // Handle negative values
    if (divisor < 0) divisor = -divisor;
    if (num < 0)     num = -num;
 
    // Find the largest product of 'divisor'
    // that is smaller than or equal to 'num'
    let i = 1;
    let product = 0;
    while (product <= num)
    {
        product = divisor * i;
        i++;
    }
 
    // return remainder
    return num - (product - divisor);
}
 
// Driver program to test above functions
document.write(getRemainder(100, 7));
 
// This code is contributed by _saurabh_jaiswal

                    

Output : 

2

Time Complexity: O(n) 

Auxiliary Space: O(1)



 

Method 3


Keep subtracting the denominator from numerator until the numerator is less than the denominator. 
 

C++

// C++ implementation of the approach
#include <iostream>
using namespace std;
 
// Function to return num % divisor
// without using % (modulo) operator
int getRemainder(int num, int divisor)
{
 
    // While divisor is smaller
    // than n, keep subtracting
    // it from num
    while (num >= divisor)
        num -= divisor;
 
    return num;
}
 
// Driver code
int main()
{
    int num = 100, divisor = 7;
    cout << getRemainder(num, divisor);
 
    return 0;
}

                    

Java

// A Java implementation of the approach
import java.util.*;
 
class GFG
{
 
// Function to return num % divisor
// without using % (modulo) operator
static int getRemainder(int num, int divisor)
{
 
    // While divisor is smaller
    // than n, keep subtracting
    // it from num
    while (num >= divisor)
        num -= divisor;
 
    return num;
}
 
// Driver code
public static void main(String[] args)
{
    int num = 100, divisor = 7;
    System.out.println(getRemainder(num, divisor));
}
}
 
// This code is contributed by Princi Singh

                    

Python3

# Python3 implementation of the approach
 
# Function to return num % divisor
# without using % (modulo) operator
def getRemainder(num, divisor):
 
    # While divisor is smaller
    # than n, keep subtracting
    # it from num
    while (num >= divisor):
        num -= divisor;
 
    return num;
 
# Driver code
if __name__ == '__main__':
 
    num = 100; divisor = 7;
    print(getRemainder(num, divisor));
 
# This code is contributed by Princi Singh

                    

C#

// C# implementation of the approach
using System;
     
class GFG
{
 
// Function to return num % divisor
// without using % (modulo) operator
static int getRemainder(int num, int divisor)
{
 
    // While divisor is smaller
    // than n, keep subtracting
    // it from num
    while (num >= divisor)
        num -= divisor;
 
    return num;
}
 
// Driver code
public static void Main(String[] args)
{
    int num = 100, divisor = 7;
    Console.WriteLine(getRemainder(num, divisor));
}
}
 
// This code is contributed by PrinciRaj1992

                    

Javascript

// Javascript implementation of the approach
 
// Function to return num % divisor
// without using % (modulo) operator
function getRemainder(num, divisor)
{
 
    // While divisor is smaller
    // than n, keep subtracting
    // it from num
    while (num >= divisor)
        num -= divisor;
 
    return num;
}
 
// Driver code
let num = 100, divisor = 7;
document.write(getRemainder(num, divisor));
 
// This code is contributed by _saurabh_jaiswal

                    

Output : 

2

Time Complexity: O(n) 

Auxiliary Space: O(1)


 



Last Updated : 11 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads