Program to find remainder without using modulo or % operator
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++ 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 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.
# 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# 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 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
?>
<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++ 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 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.
# 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# 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 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 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++ 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;
}
// 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 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# 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 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)