Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

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

  • Difficulty Level : Hard
  • Last Updated : 26 Apr, 2021

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: 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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 <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>
Output: 
Yes

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :