Related Articles

# Coprime divisors of a number

• Last Updated : 03 Mar, 2021

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 ``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

 ``
Output:
```3 5
-1```

Time Complexity : O(sqrt(N))

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up