Related Articles

# Count all pairs of divisors of a number N whose sum is coprime with N

• Last Updated : 03 Mar, 2021

Given an integer N, the task is to count all pairs of divisors of N such that the sum of each pair is coprime with N.
Examples:

Input: N = 24
Output:
Explaination:
There are 2 pairs (1, 24) and (2, 3) whose sum is coprime with 24
Input: 105
Output:
Explaination:
There are 4 pairs (1, 105), (3, 35), (5, 21) and (7, 15) whose sum is coprime with 105

Approach:
To solve the problem mentioned above we can easily calculate the result by finding all divisors in √N complexity, and check for each pair, whether its sum is coprime with N or not.
Below is the implementation of the above approach:

## C++

 `// C++ program to count all pairs``// of divisors such that their sum``// is coprime with N``#include ``using` `namespace` `std;` `// Function to calculate GCD``int` `gcd(``int` `a, ``int` `b)``{``    ``if` `(b == 0)``        ``return` `a;` `    ``return` `(gcd(b, a % b));``}` `// Function to count all valid pairs``int` `CountPairs(``int` `n)``{` `    ``// Initialize count``    ``int` `cnt = 0;` `    ``for` `(``int` `i = 1; i * i <= n; i++) {``        ``if` `(n % i == 0) {``            ``int` `div1 = i;` `            ``int` `div2 = n / i;` `            ``int` `sum = div1 + div2;` `            ``// Check if sum of pair``            ``// and n are coprime``            ``if` `(gcd(sum, n) == 1)` `                ``cnt += 1;``        ``}``    ``}` `    ``// Return the result``    ``return` `cnt;``}` `// Driver code``int` `main()``{` `    ``int` `n = 24;` `    ``cout << CountPairs(n) << endl;` `    ``return` `0;``}`

## Java

 `// Java program to count all pairs``// of divisors such that their sum``// is coprime with N``import` `java.util.*;` `class` `GFG{` `// Function to calculate GCD``public` `static` `int` `gcd(``int` `a, ``int` `b)``{``    ``if` `(b == ``0``)``        ``return` `a;` `    ``return` `(gcd(b, a % b));``}` `// Function to count all valid pairs``public` `static` `int` `CountPairs(``int` `n)``{` `    ``// Initialize count``    ``int` `cnt = ``0``;` `    ``for``(``int` `i = ``1``; i * i <= n; i++)``    ``{``       ``if` `(n % i == ``0``)``       ``{``           ``int` `div1 = i;``           ``int` `div2 = n / i;``           ``int` `sum = div1 + div2;``           ` `           ``// Check if sum of pair``           ``// and n are coprime``           ``if` `(gcd(sum, n) == ``1``)``               ``cnt += ``1``;``       ``}``    ``}` `    ``// Return the result``    ``return` `cnt;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `n = ``24``;` `    ``System.out.println(CountPairs(n));``}``}` `// This code is contributed by equbalzeeshan`

## Python3

 `# Python3 program to count all pairs``# of divisors such that their sum``# is coprime with N``import` `math as m`  `# Function to count all valid pairs``def` `CountPairs(n):``    ` `    ``# initialize count``    ``cnt ``=` `0``    ` `    ``i ``=` `1``    ` `    ``while` `i ``*` `i <``=` `n :``        ` `        ``if``(n ``%` `i ``=``=` `0``):``            ` `            ``div1 ``=` `i``            ``div2 ``=` `n``/``/``i``            ` `            ``sum` `=` `div1 ``+` `div2;``            ` `            ``# Check if sum of pair``            ``# and n are coprime``            ``if``( m.gcd(``sum``, n) ``=``=` `1``):``                ``cnt ``+``=` `1``        ` `        ``i ``+``=` `1``    ` `    ``# Return the result``    ``return` `cnt``    `  `# Driver code``n ``=` `24` `print``(CountPairs(n))`

## C#

 `// C# program to count all pairs of``// divisors such that their sum``// is coprime with N``using` `System;` `class` `GFG {` `    ``// Function to find gcd of a and b``    ``static` `int` `gcd(``int` `a, ``int` `b)``    ``{``        ``if` `(b == 0)``            ``return` `a;``        ``return` `gcd(b, a % b);``    ``}` `    ``// Function to count all valid pairs``    ``static` `int` `CountPairs(``int` `n)``    ``{` `        ``// Initialize count``        ``int` `cnt = 0;` `        ``for` `(``int` `i = 1; i * i <= n; i++) {``            ``if` `(n % i == 0) {``                ``int` `div1 = i;` `                ``int` `div2 = n / i;` `                ``int` `sum = div1 + div2;` `                ``// Check if sum of pair``                ``// and n are coprime``                ``if` `(gcd(sum, n) == 1)``                    ``cnt += 1;``            ``}``        ``}``        ``// Return the result``        ``return` `cnt;``    ``}` `    ``// Driver method``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 24;` `        ``Console.WriteLine(CountPairs(n));``    ``}``}`

## Javascript

 ``
Output:
`2`

Time Complexity: O(√N * log(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