Encuentre dos enteros coprimos tales que el primero divida a A y el segundo divida a B

Dados dos números enteros A y B , la tarea es encontrar dos números coprimos C1 y C2 tales que C1 divide a A y C2 divide a B.
Ejemplos: 
 

Entrada: A = 12, B = 16 
Salida: 3 4 
12 % 3 = 0 
16 % 4 = 0 
mcd(3, 4) = 1
Entrada: A = 542, B = 762 
Salida: 271 381 
 

Enfoque ingenuo: una solución simple es almacenar todos los divisores de A y B y luego iterar sobre todos los divisores de A y B por pares para encontrar el par de elementos que son coprimos.
Enfoque eficiente: si un entero d divide a mcd(a, b) entonces mcd(a / d, b / d) = mcd(a, b) / d . Más formalmente, si num = mcd(a, b) entonces mcd(a / num, b / num) = 1 , es decir , (a / num) y (b / num) son relativamente coprimos. 
Entonces, para encontrar los números requeridos, encuentre mcd (a, b) y guárdelo en una variablegcd _ Ahora los números requeridos serán (a/gcd) y (b/gcd) .
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the required numbers
void findNumbers(int a, int b)
{
 
    // GCD of the given numbers
    int gcd = __gcd(a, b);
 
    // Printing the required numbers
    cout << (a / gcd) << " " << (b / gcd);
}
 
// Driver code
int main()
{
    int a = 12, b = 16;
 
    findNumbers(a, b);
 
    return 0;
}

Java

// Java implementation of the approach
import java.math.*;
 
class GFG
{
    public static int findGCD(int a, int b)
    {
        if(b == 0)
            return a;
        else
            return findGCD(b, a % b);
    }
 
    // Function to find the required numbers
    static void findNumbers(int a, int b)
    {
     
        // GCD of the given numbers
        int gcd = findGCD(a, b);
         
        // Printing the required numbers
        System.out.println((a / gcd) + " " +
                           (b / gcd));
         
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int a = 12, b = 16;
     
        findNumbers(a, b);
    }
}
 
// This code is contributed by Naman_Garg

Python3

# Python3 implementation of the approach
 
# import gcd function from math module
from math import gcd
 
# Function to find the required numbers
def findNumbers(a, b) :
 
    # GCD of the given numbers
    __gcd = gcd(a, b);
 
    # Printing the required numbers
    print((a // __gcd), (b // __gcd));
 
# Driver code
if __name__ == "__main__" :
 
    a = 12; b = 16;
 
    findNumbers(a, b);
 
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
 
class GFG
{
    public static int findGCD(int a, int b)
    {
        if(b == 0)
            return a;
        else
            return findGCD(b, a % b);
    }
 
    // Function to find the required numbers
    static void findNumbers(int a, int b)
    {
     
        // GCD of the given numbers
        int gcd = findGCD(a, b);
         
        // Printing the required numbers
        Console.Write((a / gcd) + " " +
                      (b / gcd));
         
    }
 
    // Driver code
    static public void Main ()
    {
        int a = 12, b = 16;
     
        findNumbers(a, b);
    }
}
 
// This code is contributed by ajit

Javascript

<script>
 
// Javascript implementation of the approach
 
function findGCD(a, b)
{
    if (b == 0)
        return a;
    else
        return findGCD(b, a % b);
}
 
// Function to find the required numbers
function findNumbers(a, b)
{
     
    // GCD of the given numbers
    var gcd = findGCD(a, b);
     
    // Printing the required numbers
    document.write((a / gcd) + " " +
                   (b / gcd));
}
 
// Driver Code
var a = 12, b = 16;
     
findNumbers(a, b);
 
// This code is contributed by Khushboogoyal499
     
</script>
Producción: 

3 4

 

Complejidad de tiempo: O(log(min(a, b))), donde a y b son los dos parámetros de __gcd

Espacio auxiliar: O(log(min(a, b)))

Publicación traducida automáticamente

Artículo escrito por dangenmaster2 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 *