Comprobar si existe un número primo que da Y después de ser restado repetidamente de X

Dados dos enteros X e Y donde X > Y , la tarea es verificar si existe un número primo P tal que si P se resta repetidamente de X entonces da Y .

Ejemplos: 

Entrada: X = 100, Y = 98 
Salida: Sí 
(100 – (2 * 1) = 98)
Entrada: X = 45, Y = 31 
Salida: Sí 
(45 – (7 * 2)) = 31 
 

Enfoque ingenuo: Ejecute un ciclo para cada número entero a partir de 2 a x . Si un número actual es un número primo y cumple con los criterios dados en la pregunta, entonces es el número requerido.
Enfoque eficiente: tenga en cuenta que para un primo válido p , x – k * p = y o x – y = k * p . Supongamos, p = 2 entonces (x – y) = 2, 4, 6, … (todos los números pares). Esto significa que si (x – y) es par, la respuesta siempre es verdadera. Si (x – y) es un número impar distinto de 1, siempre tendrá un factor primo. O él mismo es primo o es el producto de un primo más pequeño y algunos otros números enteros. Entonces la respuesta es verdadera para todos los números impares que no sean 1
¿Qué pasa si (x – y) = 1 , no es primo ni compuesto? Así que este es el único caso donde la respuesta es falsa.
 

A continuación se muestra la implementación del enfoque:  

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if any
// prime number satisfies
// the given conditions
bool isPossible(int x, int y)
{
 
    // No such prime exists
    if ((x - y) == 1)
        return false;
 
    return true;
}
 
// Driver code
int main()
{
    int x = 100, y = 98;
 
    if (isPossible(x, y))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java implementation of the approach
import java.util.*;
 
class GFG
{
 
// Function that returns true if any
// prime number satisfies
// the given conditions
static boolean isPossible(int x, int y)
{
 
    // No such prime exists
    if ((x - y) == 1)
        return false;
 
    return true;
}
 
// Driver code
public static void main(String[] args)
{
    int x = 100, y = 98;
 
    if (isPossible(x, y))
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by Rajput-Ji

Python3

# Python3 implementation of the approach
 
# Function that returns true if any
# prime number satisfies
# the given conditions
def isPossible(x, y):
 
    # No such prime exists
    if ((x - y) == 1):
        return False
 
    return True
 
# Driver code
x = 100
y = 98
 
if (isPossible(x, y)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by Mohit Kumar

C#

// C# implementation of the approach
using System;
 
class GFG
{
 
// Function that returns true if any
// prime number satisfies
// the given conditions
static bool isPossible(int x, int y)
{
 
    // No such prime exists
    if ((x - y) == 1)
        return false;
 
    return true;
}
 
// Driver code
public static void Main(String[] args)
{
    int x = 100, y = 98;
 
    if (isPossible(x, y))
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
// javascript implementation of the approach
 
    // Function that returns true if any
    // prime number satisfies
    // the given conditions
    function isPossible(x , y) {
 
        // No such prime exists
        if ((x - y) == 1)
            return false;
 
        return true;
    }
 
    // Driver code
     
        var x = 100, y = 98;
 
        if (isPossible(x, y))
            document.write("Yes");
        else
            document.write("No");
 
// This code contributed by umadevi9616
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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