Open In App

Check if A can be converted to B by reducing with a Prime number

Given two integers, A and B, the task is to find whether it is possible to make A equal to B if you are allowed to subtract a prime number P any number of times from A.
Examples: 
 

Input: A = 10, B = 4 
Output: YES 
Explanation: 
Let P = 2 and after subtracting it 
three times from A
Input: A = 41, B = 40 
Output: NO 
 


 


Approach: The key observation in the problem is we have to represent the number A as 


 

, As we know every number is divisible by some prime number except 1. Therefore if we find the difference of the number 



 

and if the difference is greater than 1 then both the number can be made equal by subtracting a prime number X times from A.
Below is the implementation of the above approach:
 


 

// C++ implementation to find if
// it is possible to make a equal to b
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find if
// it is possible to make
// A equal to B
bool isPossible(int A, int B)
{
    return (A - B > 1);
}
 
// Driver Code
int main()
{
    int A = 10, B = 4;
     
    // Function Call
    if (isPossible(A, B))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

                    
// Java implementation to find if
// it is possible to make a equal to b
class GFG{
 
// Function to find if
// it is possible to make
// A equal to B
static boolean isPossible(int A, int B)
{
    return (A - B > 1);
}
 
// Driver Code
public static void main (String[] args)
{
    int A = 10, B = 4;
     
    // Function Call
    if (isPossible(A, B))
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by shivanisinghss2110

                    
# Python3 implementation to find if
# it is possible to make a equal to b
 
# Function to find if
# it is possible to make
# A equal to B
def isPossible(A, B):
 
    return (A - B > 1);
 
# Driver Code
A = 10; B = 4;
     
# Function Call
if (isPossible(A, B)):
    print("Yes");
else:
    print("No");
 
# This code is contributed by Code_Mech

                    
// C# implementation to find if
// it is possible to make a equal to b
using System;
class GFG{
 
// Function to find if
// it is possible to make
// A equal to B
static bool isPossible(int A, int B)
{
    return (A - B > 1);
}
 
// Driver Code
public static void Main()
{
    int A = 10, B = 4;
     
    // Function Call
    if (isPossible(A, B))
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code is contributed by Code_Mech

                    
<script>
 
    // Javascript implementation to find if
    // it is possible to make a equal to b
     
    // Function to find if
    // it is possible to make
    // A equal to B
    function isPossible(A, B)
    {
        return (A - B > 1);
    }
       
    let A = 10, B = 4;
       
    // Function Call
    if (isPossible(A, B))
        document.write("Yes");
    else
        document.write("No");
         
</script>

                    

Output: 
Yes
 

Time Complexity: O(1).

Space Complexity: O(1) as no extra space has been used.


Article Tags :