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)