Skip to content
Related Articles

Related Articles

Number of co-prime pairs from 1 to N which consists of given two digits
  • Last Updated : 23 Feb, 2021

Given an integer N and two integers D1 and D2 ( < 10), the task is to find the number of co-prime pairs less than or equal to N consisting of only digits D1 and D2.

Examples:

Input: N = 30, D1 = 2, D2 = 3
Output: 5
Explanation: 
All possible pairs of numbers upto 30 having digits 2 and 3 which are co-prime to each other are (2, 3), (2, 23), (3, 22), (3, 23), (22, 23) .

Input: N = 100, D1 = 5, D2 = 6
Output: 8
Explanation: 
All possible pairs of numbers upto 100 having digits 5 and 6 which are co-prime to each other are (5, 6), (5, 56), (5, 66), (6, 55), (6, 65), (55, 56), (56, 65), (65, 66).

Approach: The idea to solve this problem is based on the following observations:



Observation:

  • Find and append every number consisting only given two digits which are less than or equal to N into a list.
  • Now it’s easy to find the number of unordered pairs which are co-primes.
  • Note that there can be maximum 1 + 2 + 22 + 23 + 24 + ………210= 2047 numbers in the list i.e. Overall Time Complexity cannot exceed O(2047 * 2047), as the maximum no. of digits possible is 9.

Follow the steps below to solve the problem:

  • Initialize an empty list, say l, and append the given two digits as a string into the list.
  • Sort the list.
  • Initialize two lists, say total and temp2 for further use.
  • Iterate until l[0] < 10:
    • Append the given two digits as a string to all the elements present in the list l.
    • Keep updating l in the way shown below:
      • [2, 3] -> [‘2’ + ‘2’, ‘2’ + ‘3’, ‘3’ + ‘2’, ‘3’ + ‘3’]
      • [22, 23, 32, 33] – > [’22’ + ‘2’, ’22’ + ‘3’, ’23’ + ‘2’, ’23’ + ‘3’, ’32’ + ‘2’, ’32’ + ‘3’, ’33’ + ‘2’, ’33’ + ‘3’] and so on.
  • Define a function numOfPairs() which returns the count of unordered co-prime pairs.
  • Print the count returned by the above function as the answer.

Below is the implementation of the above approach:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for the above approach
  
from copy import deepcopy
import math
  
# Function to check whether given
# integers are co-prime or not
def coprime(a, b):
    return (math.gcd(a, b)) == 1
  
# Utility function to count
# number of co-prime pairs
def numOfPairs(arr, N):
    count = 0
  
    # Traverse the array
    for i in range(0, N-1):
        for j in range(i+1, N):
  
            # If co-prime
            if (coprime(int(arr[i]), int(arr[j]))):
  
                # Increment count
                count = count + 1
  
    # Return count
    return count
  
# Function to count number
# of co-prime pairs
def noOfCoPrimePairs(N, d1, d2):
  
    # Stores digits in string form
    l = []
    l.append(str(d1))
    l.append(str(d2))
  
    # Sort the list
    l.sort()
  
    if int(N) < int(l[1]):
        return 0
  
    # Keep two copies of list l
    total = temp2 = deepcopy(l)
    flag = 0
    temp3 = []
  
    # Generate 2 digit numbers
    # using d1 and d2
    while len(l[0]) < 10:
        for i in range(len(l)):
            for j in range(2):
  
                # If current number
                # does not exceed N
                if int(l[i]+temp2[j]) > int(N):
                    flag = 1
                    break
  
                total.append(l[i]+temp2[j])
                temp3.append(l[i]+temp2[j])
  
            if flag == 1:
                break
        if flag == 1:
            break
        l = deepcopy(temp3)
        temp3 = []
  
    # Stores length of list
    lenOfTotal = len(total)
  
    # Stores number of co-prime pairs
    ans = numOfPairs(total, lenOfTotal)
  
    # Print number of co-prime pairs
    print(ans)
  
  
# Driver Code
if __name__ == "__main__":
  
    # Given value of N, d1, d2
    N = 30
    d1 = 2
    d2 = 3
  
    # Function call to count
    # number of co-prime pairs
    noOfCoPrimePairs(N, d1, d2)

chevron_right


Output:

5

Time Complexity: O(2logN)
Auxiliary Space: O(2logN)

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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :