In the previous article, we have discussed Python Program for Modular Multiplicative Inverse from 1 to n
Given two numbers a, b and the task is to find all x such that given a % x = b
Examples:
Example1:
Input:
Given a value = 21 Given b value = 5
Output:
The value of x such that given a%x==b {a,b = 21 5 } = 2Explanation:
Here the values of x which satisfy a%x=b are 8,16 because 21%8=5 ,21%16=5. so total number of possible x are 8,16 i.e 2 values
Example2:
Input:
Given a value = 35 Given b value = 8
Output:
The value of x such that given a%x==b {a,b = 35 8 } = 2Program for Given two Numbers a and b Find all x Such that a % x = b in Python
Below are the ways to find all x such that given a % x = b in python:
Method #1: Using For Loop (Static Input)
Approach:
- Import the math module using the import keyword.
- Give the number as static input and store it in a variable.
- Give the other number as static input and store it in another variable.
- Pass the given number two numbers as the arguments to the a_mod_xisb function.
- Create a function to say a_mod_xisb which takes the given two numbers as the arguments and returns all the values of x such that given a % x = b.
- Check if the given number a is less than the given b value using the if conditional statement.
- If it is true then print “There are no solutions possible”.
- Return.
- Check if the given a value is equal to the given b value using the if conditional statement.
- If it is true then print “Infinite Solutions are possible for the equation”.
- Return.
- Take a variable say cnt and initialize its value to 0.
- Subtract the given b value from the given a value and store it in another variable say rslt.
- Calculate the value of square root of (gvn_a_val – gvn_b_val) using the math.sqrt() function and convert result to an integer using the int() function.
- Store it in another variable say k.
- Loop from 1 to the above result k using the for loop.
- Inside the loop, check if the above value of rslt modulus iterator value is equal to 0 using the if conditional statement.
- Again check if the rslt divided by the iterator value greater than the given b value using the if conditional statement.
- If it is true, increment the count value by 1 and store it in the same variable.
- Check if the iterator value is greater than the given b value using the if conditional statement.
- If it is true, increment the count value by 1 and store it in the same variable.
- Check if the k multiplied with itself is equal to the rslt and k greater than the given b value using the if conditional statement.
- If it is true, decrement the count value by 1 and store it in the same variable.
- Print the value of x such that given a%x==b.
- The Exit of the Program.
Below is the implementation:
# Import the math module using the import keyword.
import math
# Create a function to say a_mod_xisb which takes the given two numbers as the arguments
# and returns all the values of x such that given a % x = b.
def a_mod_xisb(gvn_a_val, gvn_b_val):
# Check if the given number a is less than the given b value using the if conditional
# statement.
if (gvn_a_val < gvn_b_val):
# If it is true then print "There are no solutions possible".
print("There are no solutions possible")
# Return.
return
# Check if the given a value is equal to the given b value using the if conditional
# statement.
if (gvn_a_val == gvn_b_val):
# If it is true then print "Infinite Solutions are possible for the equation".
# Return.
print("Infinite Solutions are possible for the equation")
return
# Take a variable say cnt and initialize its value to 0.
cnt = 0
# Subtract the given b value from the given a value and store it in another variable
# say rslt.
rslt = gvn_a_val - gvn_b_val
# Calculate the value of square root of (gvn_a_val - gvn_b_val) using the math.sqrt()
# function and convert result to an integer using the int() function.
# Store it in another variable say k.
k = (int)(math.sqrt(gvn_a_val - gvn_b_val))
# Loop from 1 to the above result k using the for loop.
for itr in range(1, k+1):
# Inside the loop, check if the above value of rslt modulus iterator value is equal
# to 0 using the if conditional statement.
if (rslt % itr == 0):
# Again check if the rslt divided by the iterator value greater than the given b value
# using the if conditional statement.
if (rslt / itr > gvn_b_val):
# If it is true, increment the count value by 1 and store it in the same variable.
cnt = cnt + 1
# Check if the iterator value is greater than the given b value using the if
# conditional statement.
if (itr > gvn_b_val):
# If it is true, increment the count value by 1 and store it in the same variable.
cnt = cnt + 1
# Check if the k multiplied with itself is equal to the rslt and k greater than the
# given b value using the if conditional statement.
if (k * k == rslt and k > gvn_b_val):
# If it is true, decrement the count value by 1 and store it in the same variable.
cnt = cnt - 1
# Print the value of x such that given a%x==b.
print(
"The value of x such that given a%x==b {a,b =", gvn_a_val, gvn_b_val, "} = ", cnt)
# Give the number as static input and store it in a variable.
gvn_a_val = 15
# Give the other number as static input and store it in another variable.
gvn_b_val = 2
# Pass the given number two numbers as the arguments to the a_mod_xisb function.
a_mod_xisb(gvn_a_val, gvn_b_val)
Output:
The value of x such that given a%x==b {a,b = 15 2 } = 1Method #2: Using For loop (User Input)
Approach:
- Import the math module using the import keyword.
- Give the number as user input using the int(input()) function and store it in a variable.
- Give the other number as user input using the int(input()) function and store it in another variable.
- Pass the given number two numbers as the arguments to the a_mod_xisb function.
- Create a function to say a_mod_xisb which takes the given two numbers as the arguments and returns all the values of x such that given a % x = b.
- Check if the given number a is less than the given b value using the if conditional statement.
- If it is true then print “There are no solutions possible”.
- Return.
- Check if the given a value is equal to the given b value using the if conditional statement.
- If it is true then print “Infinite Solutions are possible for the equation”.
- Return.
- Take a variable say cnt and initialize its value to 0.
- Subtract the given b value from the given a value and store it in another variable say rslt.
- Calculate the value of square root of (gvn_a_val – gvn_b_val) using the math.sqrt() function and convert result to an integer using the int() function.
- Store it in another variable say k.
- Loop from 1 to the above result k using the for loop.
- Inside the loop, check if the above value of rslt modulus iterator value is equal to 0 using the if conditional statement.
- Again check if the rslt divided by the iterator value greater than the given b value using the if conditional statement.
- If it is true, increment the count value by 1 and store it in the same variable.
- Check if the iterator value is greater than the given b value using the if conditional statement.
- If it is true, increment the count value by 1 and store it in the same variable.
- Check if the k multiplied with itself is equal to the rslt and k greater than the given b value using the if conditional statement.
- If it is true, decrement the count value by 1 and store it in the same variable.
- Print the value of x such that given a%x==b.
- The Exit of the Program.
Below is the implementation:
# Import the math module using the import keyword.
import math
# Create a function to say a_mod_xisb which takes the given two numbers as the arguments
# and returns all the values of x such that given a % x = b.
def a_mod_xisb(gvn_a_val, gvn_b_val):
# Check if the given number a is less than the given b value using the if conditional
# statement.
if (gvn_a_val < gvn_b_val):
# If it is true then print "There are no solutions possible".
print("There are no solutions possible")
# Return.
return
# Check if the given a value is equal to the given b value using the if conditional
# statement.
if (gvn_a_val == gvn_b_val):
# If it is true then print "Infinite Solutions are possible for the equation".
# Return.
print("Infinite Solutions are possible for the equation")
return
# Take a variable say cnt and initialize its value to 0.
cnt = 0
# Subtract the given b value from the given a value and store it in another variable
# say rslt.
rslt = gvn_a_val - gvn_b_val
# Calculate the value of square root of (gvn_a_val - gvn_b_val) using the math.sqrt()
# function and convert result to an integer using the int() function.
# Store it in another variable say k.
k = (int)(math.sqrt(gvn_a_val - gvn_b_val))
# Loop from 1 to the above result k using the for loop.
for itr in range(1, k+1):
# Inside the loop, check if the above value of rslt modulus iterator value is equal
# to 0 using the if conditional statement.
if (rslt % itr == 0):
# Again check if the rslt divided by the iterator value greater than the given b value
# using the if conditional statement.
if (rslt / itr > gvn_b_val):
# If it is true, increment the count value by 1 and store it in the same variable.
cnt = cnt + 1
# Check if the iterator value is greater than the given b value using the if
# conditional statement.
if (itr > gvn_b_val):
# If it is true, increment the count value by 1 and store it in the same variable.
cnt = cnt + 1
# Check if the k multiplied with itself is equal to the rslt and k greater than the
# given b value using the if conditional statement.
if (k * k == rslt and k > gvn_b_val):
# If it is true, decrement the count value by 1 and store it in the same variable.
cnt = cnt - 1
# Print the value of x such that given a%x==b.
print(
"The value of x such that given a%x==b {a,b =", gvn_a_val, gvn_b_val, "} = ", cnt)
# Give the number as user input using the int(input()) function and
# store it in a variable.
gvn_a_val = int(input("Enter some random number = "))
# Give the other number as user input using the int(input()) function and
# store it in another variable.
gvn_b_val = int(input("Enter some random number = "))
# Pass the given number two numbers as the arguments to the a_mod_xisb function.
a_mod_xisb(gvn_a_val, gvn_b_val)
Output:
Enter some random number = 35
Enter some random number = 8
The value of x such that given a%x==b {a,b = 35 8 } = 2Explore more Example Python Programs with output and explanation and practice them for your interviews, assignments and stand out from the rest of the crowd.
