Programa para encontrar el resto sin usar el módulo o el operador % – Part 1

Dados dos números ‘num’ y ‘divisor’, encuentre el resto cuando ‘num’ se divide por ‘divisor’. No se permite el uso del operador módulo o %.
Ejemplos: 

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

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

Método 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>

Producción : 

2

Complejidad de tiempo: O(1) 

Espacio auxiliar: O(1)
Este método es aportado por Bishal Kumar Dubey
 

Método 2

La idea es simple, ejecutamos un ciclo para encontrar el mayor múltiplo de ‘divisor’ que es menor o igual que ‘num’. Una vez que encontramos dicho múltiplo, restamos el múltiplo de ‘num’ para encontrar el divisor.
A continuación se muestra la implementación de la idea anterior. Gracias a eleventyone por sugerir esta solución en un comentario. 
 

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

Producción : 

2

Complejidad de tiempo: O(n) 

Espacio Auxiliar: O(1)

Este artículo es una contribución de Chirag. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Método 3

Sigue restando el denominador del numerador hasta que el numerador sea menor que el denominador. 
 

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

Producción : 

2

Complejidad de tiempo: O(n) 

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *