# Count of pairs of integers whose difference of squares is equal to N

Given a positive integer **N**, the task is to find the count of pairs of integers **(x, y)** whose difference of squares is equal to N, i.e.,

**Examples:**

Input:N = 20Output:4Explanation:

The 4 possible pairs are (10, 2), (-10, 2), (-10, -2) and (10, -2).

Input:N = 80Output:12Explanation:

The 12 possible pairs are:

1. (40, 2), (-40, 2), (-40, -2) and (40, -2).

2. (20, 4), (-20, 4), (-20, -4) and (20, -4).

3. (10, 8), (-10, 8), (-10, -8) and (10, -8).

**Approach:**

The given equation can also be written as:

=>

=>

Now for an integral solution of the given equation:

(x+y)(x-y)

is always an integer

=> (x+y)(x-y)

are divisors ofN

Let (x + y) = p1 and (x + y) = p2

be the two equations where p1 & p2 are the divisors of **N**

such that **p1 * p2 = N**.

Solving for the above two equation we have:

=>

and

From the above calculations, for **x and y** to be integral, then the sum of divisors must be **even**. Since there are 4 possible values for two values of x and y as **(+x, +y), (+x, -y), (-x, +y) and (-x, -y)**.

Therefore the total number of possible solution is given by **4*(count pairs of divisors with even sum)**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the integral` `// solutions of the given equation` `void` `findSolutions(` `int` `N)` `{` ` ` `// Initialise count to 0` ` ` `int` `count = 0;` ` ` `// Iterate till sqrt(N)` ` ` `for` `(` `int` `i = 1; i <= ` `sqrt` `(N); i++) {` ` ` `if` `(N % i == 0) {` ` ` `// If divisor's pair sum is even` ` ` `if` `((i + N / i) % 2 == 0) {` ` ` `count++;` ` ` `}` ` ` `}` ` ` `}` ` ` `// Print the total possible solutions` ` ` `cout << 4 * count << endl;` `}` `// Driver Code` `int` `main()` `{` ` ` `// Given number N` ` ` `int` `N = 80;` ` ` `// Function Call` ` ` `findSolutions(N);` ` ` `return` `0;` `}` |

## Java

`// Java program for the above approach` `import` `java.util.*;` `class` `GFG{` `// Function to find the integral` `// solutions of the given equation` `static` `void` `findSolutions(` `int` `N)` `{` ` ` `// Initialise count to 0` ` ` `int` `count = ` `0` `;` ` ` `// Iterate till sqrt(N)` ` ` `for` `(` `int` `i = ` `1` `; i <= Math.sqrt(N); i++)` ` ` `{` ` ` `if` `(N % i == ` `0` `)` ` ` `{` ` ` ` ` `// If divisor's pair sum is even` ` ` `if` `((i + N / i) % ` `2` `== ` `0` `)` ` ` `{` ` ` `count++;` ` ` `}` ` ` `}` ` ` `}` ` ` ` ` `// Print the total possible solutions` ` ` `System.out.print(` `4` `* count);` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` ` ` `// Given number N` ` ` `int` `N = ` `80` `;` ` ` ` ` `// Function Call` ` ` `findSolutions(N);` `}` `}` `// This code is contributed by Shubham Prakash.` |

## Python3

`# Python3 program for the above approach` `import` `math;` `# Function to find the integral` `# solutions of the given equation` `def` `findSolutions(N):` ` ` `# Initialise count to 0` ` ` `count ` `=` `0` `;` ` ` `# Iterate till sqrt(N)` ` ` `for` `i ` `in` `range` `(` `1` `, ` `int` `(math.sqrt(N)) ` `+` `1` `):` ` ` `if` `(N ` `%` `i ` `=` `=` `0` `):` ` ` `# If divisor's pair sum is even` ` ` `if` `((i ` `+` `N ` `/` `/` `i) ` `%` `2` `=` `=` `0` `):` ` ` `count ` `+` `=` `1` `;` ` ` ` ` `# Print the total possible solutions` ` ` `print` `(` `4` `*` `count);` `# Driver Code` `# Given number N` `N ` `=` `80` `;` `# Function Call` `findSolutions(N);` `# This code is contributed by Code_Mech` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` `// Function to find the integral` `// solutions of the given equation` `static` `void` `findSolutions(` `int` `N)` `{` ` ` `// Initialise count to 0` ` ` `int` `count = 0;` ` ` `// Iterate till sqrt(N)` ` ` `for` `(` `int` `i = 1; i <= Math.Sqrt(N); i++)` ` ` `{` ` ` `if` `(N % i == 0)` ` ` `{` ` ` ` ` `// If divisor's pair sum is even` ` ` `if` `((i + N / i) % 2 == 0)` ` ` `{` ` ` `count++;` ` ` `}` ` ` `}` ` ` `}` ` ` ` ` `// Print the total possible solutions` ` ` `Console.Write(4 * count);` `}` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` ` ` `// Given number N` ` ` `int` `N = 80;` ` ` ` ` `// Function Call` ` ` `findSolutions(N);` `}` `}` `// This code is contributed by sapnasingh4991` |

## Javascript

`<script>` `// Javascript program for the above approach` `// Function to find the integral` `// solutions of the given equation` `function` `findSolutions(N)` `{` ` ` ` ` `// Initialise count to 0` ` ` `let count = 0;` ` ` `// Iterate till sqrt(N)` ` ` `for` `(let i = 1; i <= Math.sqrt(N); i++)` ` ` `{` ` ` `if` `(N % i == 0)` ` ` `{` ` ` ` ` `// If divisor's pair sum is even` ` ` `if` `((i + parseInt(N / i)) % 2 == 0)` ` ` `{` ` ` `count++;` ` ` `}` ` ` `}` ` ` `}` ` ` ` ` `// Print the total possible solutions` ` ` `document.write(4 * count + ` `"<br>"` `);` `}` `// Driver Code` `// Given number N` `let N = 80;` `// Function Call` `findSolutions(N);` `// This code is contributed by souravmahato348` `</script>` |

**Output:**

12

**Time Complexity:** *O(sqrt(N))*