# Check if there exists a prime number which gives Y after being repeatedly subtracted from X

Last Updated : 03 Mar, 2022

Given two integers X and Y where X > Y, the task is to check if there exists a prime number P such that if P is repeatedly subtracted from X then it gives Y.

Examples:

Input: X = 100, Y = 98
Output: Yes
(100 – (2 * 1) = 98)
Input: X = 45, Y = 31
Output: Yes
(45 – (7 * 2)) = 31

Naive approach: Run a loop for every integer starting from 2 to x. If a current number is a prime number, and it meets the criteria given in the question, then it is the required number.
Efficient approach: Notice that for a valid prime p, x – k * p = y or x – y = k * p. Suppose, p = 2 then (x – y) = 2, 4, 6, … (all even numbers). This means if (x – y) is even then the answer is always true. If (x – y) is an odd number other than 1, it will always have a prime factor. Either it itself is prime or it is a product of a smaller prime and some other integers. So the answer is True for all odd numbers other than 1
What if (x – y) = 1, it is neither a prime nor composite. So this is the only case where the answer is false.

Below is the implementation of the approach:

## C++

 `// C++ implementation of the approach` `#include ` `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

 ``

Output:

`Yes`

Time Complexity: O(1)

Auxiliary Space: O(1)