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>
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