Open In App

Coprime divisors of a number

Last Updated : 16 Oct, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer N. The task is to find a pair of co-prime divisors of N, greater than 1. If such divisors don’t exists then print ‘-1’. 

Examples:

Input: N = 45 
Output: 3 5 
Explanation: Since 3 and 5 are divisors of 45 and gcd( 3, 5 ) = 1 . 
Hence, they satisfy the condition.

Input: N = 25 
Output: -1 
Explanation: No pair of divisors of 25 satisfy the condition such 
that their gcd is 1.

Approach: 

  1. Iterate from x = 2 to sqrt(N), to find all divisors of N
  2. For any value x, check if it divides N
  3. If it divides, then keep dividing N by x as long as it is divisible.
  4. Now, check if N > 1, then the pair of divisors (x, N) will have 
    gcd(x, N) == 1, since all the factors of ‘x’ has been eliminated from N.
  5. Similarly, check for all values of x.

Below is the implementation of the above approach:

C++




// C++ program to find two coprime
// divisors of a given number
// such that both are greater
// than 1
 
#include <bits/stdc++.h>
using namespace std;
 
// Function which finds the
// required pair of divisors
// of N
void findCoprimePair(int N)
{
    // We iterate upto sqrt(N)
    // as we can find all the
    // divisors of N in this
    // time
    for (int x = 2; x <= sqrt(N); x++) {
        if (N % x == 0) {
            // If x is a divisor of N
            // keep dividing as long
            // as possible
            while (N % x == 0) {
                N /= x;
            }
            if (N > 1) {
                // We have found a
                // required pair
                cout << x << " "
                     << N << endl;
                return;
            }
        }
    }
    // No such pair of divisors
    // of N was found, hence
    // print -1
    cout << -1 << endl;
}
 
// Driver Code
int main()
{
    // Sample example 1
    int N = 45;
    findCoprimePair(N);
 
    // Sample example 2
    N = 25;
    findCoprimePair(N);
    return 0;
}


Java




// Java program to find two coprime
// divisors of a given number
// such that both are greater
// than 1
import java.util.*;
 
class GFG{
     
// Function which finds the
// required pair of divisors
// of N
public static void findCoprimePair(int N)
{
     
    // We iterate upto sqrt(N)
    // as we can find all the
    // divisors of N in this
    // time
    for(int x = 2; x <= Math.sqrt(N); x++)
    {
        if (N % x == 0)
        {
             
            // If x is a divisor of N
            // keep dividing as long
            // as possible
            while (N % x == 0)
            {
                N /= x;
            }
            if (N > 1)
            {
                 
                // We have found a
                // required pair
                System.out.println(x + " " + N);
                return;
            }
        }
    }
     
    // No such pair of divisors
    // of N was found, hence
    // print -1
    System.out.println(-1);
}
 
// Driver code
public static void main(String[] args)
{
     
    // Sample example 1
    int N = 45;
    findCoprimePair(N);
   
    // Sample example 2
    N = 25;
    findCoprimePair(N);
}
}
 
// This code is contributed by divyeshrabadiya07


Python3




# Python3 program to find two coprime
# divisors of a given number such that
# both are greater than 1
import math
 
# Function which finds the
# required pair of divisors
# of N
def findCoprimePair(N):
     
    # We iterate upto sqrt(N)
    # as we can find all the
    # divisors of N in this
    # time
    for x in range(2, int(math.sqrt(N)) + 1):
        if (N % x == 0):
             
            # If x is a divisor of N
            # keep dividing as long
            # as possible
            while (N % x == 0):
                N //= x
 
            if (N > 1):
 
                # We have found a
                # required pair
                print(x, N)
                return;
 
    # No such pair of divisors
    # of N was found, hence
    # print -1
    print("-1")
 
# Driver Code
 
# Sample example 1
N = 45
findCoprimePair(N)
 
# Sample example 2
N = 25
findCoprimePair(N)
 
# This code is contributed by Vishal Maurya.


C#




// C# program to find two coprime
// divisors of a given number
// such that both are greater
// than 1
using System;
class GFG{
     
// Function which finds the
// required pair of divisors
// of N
public static void findCoprimePair(int N)
{
  // We iterate upto sqrt(N)
  // as we can find all the
  // divisors of N in this
  // time
  for(int x = 2;
          x <= Math.Sqrt(N); x++)
  {
    if (N % x == 0)
    {
      // If x is a divisor of N
      // keep dividing as long
      // as possible
      while (N % x == 0)
      {
        N /= x;
      }
      if (N > 1)
      {
        // We have found a
        // required pair
        Console.WriteLine(x +
                          " " + N);
        return;
      }
    }
  }
 
  // No such pair of divisors
  // of N was found, hence
  // print -1
  Console.WriteLine(-1);
}
 
// Driver code
public static void Main(String[] args)
{   
  // Sample example 1
  int N = 45;
  findCoprimePair(N);
 
  // Sample example 2
  N = 25;
  findCoprimePair(N);
}
}
 
// This code is contributed by Chitranayal


Javascript




<script>
 
// JavaScript program to find two coprime
// divisors of a given number
// such that both are greater
// than 1
 
// Function which finds the
// required pair of divisors
// of N
function findCoprimePair(N)
{
    // We iterate upto sqrt(N)
    // as we can find all the
    // divisors of N in this
    // time
    for (let x = 2; x <= Math.sqrt(N); x++) {
        if (N % x == 0) {
            // If x is a divisor of N
            // keep dividing as long
            // as possible
            while (N % x == 0) {
                N = Math.floor(N / x);
            }
            if (N > 1) {
                // We have found a
                // required pair
                document.write(x + " "
                    + N + "<br>");
                return;
            }
        }
    }
    // No such pair of divisors
    // of N was found, hence
    // print -1
    document.write(-1 + "<br>");
}
 
// Driver Code
    // Sample example 1
    let N = 45;
    findCoprimePair(N);
 
    // Sample example 2
    N = 25;
    findCoprimePair(N);
 
// This code is contributed by Surbhi Tyagi.
 
</script>


Output: 

3 5
-1

 

Time Complexity: O(sqrt(N))
Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads