# Find two numbers such that difference of their squares equal to N

Given an integer **N**, the task is to find two non-negative integers **A** and **B**, such that **A ^{2} – B^{2} = N**. If no such integers exist, then print

**-1**.

**Examples:**

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****.**

Input:N = 7Output:4 3Explanation:

The two integers 4 and 3 can be represented as4.^{2}– 3^{2}= 7Input:N = 6Output:-1Explanation:

No pair of (A, B) exists that satisfies the required condition.

**Approach:**

**A**can be represented as^{2}– B^{2}**(A – B) * (A + B)**.

A

^{2}– B^{2}= (A – B) * (A + B)

- Thus, for
**A**to be equal to^{2}– B^{2}**N**, both**(A + B)**and**(A – B)**should be divisors of**N**. - Considering
**A + B**and**A – B**to be equal to**C**and**D**respectively, then**C**and**D**must be divisors of**N**such that**C â‰¤ D**and**C**and**D**should be of the same parity. - Hence, in order to solve this problem, we just need to find any pair
**C**and**D**satisfying the above condition. If no such**C & D**exists, then the print**-1**.

Below is the implementation of the above approach:

## C++

`// C++ Program to find two numbers` `// with difference of their` `// squares equal to N` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to check and print` `// the required two positive integers` `void` `solve(` `int` `n)` `{` ` ` `// Iterate till sqrt(n) to find` ` ` `// factors of N` ` ` `for` `(` `int` `x = 1; x <= ` `sqrt` `(n); x++) {` ` ` `// Check if x is one` ` ` `// of the factors of N` ` ` `if` `(n % x == 0) {` ` ` `// Store the factor` ` ` `int` `small = x;` ` ` `// Compute the other factor` ` ` `int` `big = n / x;` ` ` `// Check if the two factors` ` ` `// are of the same parity` ` ` `if` `(small % 2 == big % 2) {` ` ` `// Compute a and b` ` ` `int` `a = (small + big) / 2;` ` ` `int` `b = (big - small) / 2;` ` ` `cout << a << ` `" "` ` ` `<< b << endl;` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `}` ` ` `// If no pair exists` ` ` `cout << -1 << endl;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `n = 7;` ` ` `solve(n);` ` ` `return` `0;` `}` |

## Java

`// Java Program to find two numbers` `// with difference of their` `// squares equal to N` `import` `java.util.*;` `class` `GFG{` `// Function to check and print` `// the required two positive integers` `static` `void` `solve(` `int` `n)` `{` ` ` `// Iterate till sqrt(n) to find` ` ` `// factors of N` ` ` `for` `(` `int` `x = ` `1` `; x <= Math.sqrt(n); x++)` ` ` `{` ` ` `// Check if x is one` ` ` `// of the factors of N` ` ` `if` `(n % x == ` `0` `)` ` ` `{` ` ` `// Store the factor` ` ` `int` `small = x;` ` ` `// Compute the other factor` ` ` `int` `big = n / x;` ` ` `// Check if the two factors` ` ` `// are of the same parity` ` ` `if` `(small % ` `2` `== big % ` `2` `)` ` ` `{` ` ` `// Compute a and b` ` ` `int` `a = (small + big) / ` `2` `;` ` ` `int` `b = (big - small) / ` `2` `;` ` ` `System.out.print(a + ` `" "` `+ b);` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `}` ` ` `// If no pair exists` ` ` `System.out.print(-` `1` `);` `}` `// Driver Code` `public` `static` `void` `main(String args[])` `{` ` ` `int` `n = ` `7` `;` ` ` `solve(n);` `}` `}` `// This code is contributed by Code_Mech` |

## Python3

`# Python3 Program to find two numbers` `# with difference of their` `# squares equal to N` `from` `math ` `import` `sqrt` `# Function to check and print` `# the required two positive integers` `def` `solve(n) :` ` ` ` ` `# Iterate till sqrt(n) to find` ` ` `# factors of N` ` ` `for` `x ` `in` `range` `(` `1` `, ` `int` `(sqrt(n)) ` `+` `1` `) :` ` ` ` ` `# Check if x is one` ` ` `# of the factors of N` ` ` `if` `(n ` `%` `x ` `=` `=` `0` `) :` ` ` ` ` `# Store the factor` ` ` `small ` `=` `x;` ` ` ` ` `# Compute the other factor` ` ` `big ` `=` `n ` `/` `/` `x;` ` ` ` ` `# Check if the two factors` ` ` `# are of the same parity` ` ` `if` `(small ` `%` `2` `=` `=` `big ` `%` `2` `) :` ` ` ` ` `# Compute a and b` ` ` `a ` `=` `(small ` `+` `big) ` `/` `/` `2` `;` ` ` `b ` `=` `(big ` `-` `small) ` `/` `/` `2` `;` ` ` `print` `(a, b) ;` ` ` `return` `;` ` ` ` ` `# If no pair exists` ` ` `print` `(` `-` `1` `);` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `n ` `=` `7` `;` ` ` `solve(n);` `# This code is contributed by AnkitRai01` |

## C#

`// C# Program to find two numbers` `// with difference of their` `// squares equal to N` `using` `System;` `class` `GFG{` `// Function to check and print` `// the required two positive integers` `static` `void` `solve(` `int` `n)` `{` ` ` `// Iterate till sqrt(n) to find` ` ` `// factors of N` ` ` `for` `(` `int` `x = 1; x <= Math.Sqrt(n); x++)` ` ` `{` ` ` `// Check if x is one` ` ` `// of the factors of N` ` ` `if` `(n % x == 0)` ` ` `{` ` ` `// Store the factor` ` ` `int` `small = x;` ` ` `// Compute the other factor` ` ` `int` `big = n / x;` ` ` `// Check if the two factors` ` ` `// are of the same parity` ` ` `if` `(small % 2 == big % 2)` ` ` `{` ` ` `// Compute a and b` ` ` `int` `a = (small + big) / 2;` ` ` `int` `b = (big - small) / 2;` ` ` `Console.WriteLine(a + ` `" "` `+ b);` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `}` ` ` `// If no pair exists` ` ` `Console.WriteLine(-1);` `}` `// Driver Code` `public` `static` `void` `Main()` `{` ` ` `int` `n = 7;` ` ` `solve(n);` `}` `}` `// This code is contributed by Code_Mech` |

## Javascript

`<script>` `// javascript Program to find two numbers` `// with difference of their` `// squares equal to N` ` ` `// Function to check and print` ` ` `// the required two positive integers` ` ` `function` `solve(n) {` ` ` `// Iterate till sqrt(n) to find` ` ` `// factors of N` ` ` `for` `(` `var` `x = 1; x <= Math.sqrt(n); x++) {` ` ` `// Check if x is one` ` ` `// of the factors of N` ` ` `if` `(n % x == 0) {` ` ` `// Store the factor` ` ` `var` `small = x;` ` ` `// Compute the other factor` ` ` `var` `big = n / x;` ` ` `// Check if the two factors` ` ` `// are of the same parity` ` ` `if` `(small % 2 == big % 2) {` ` ` `// Compute a and b` ` ` `var` `a = (small + big) / 2;` ` ` `var` `b = (big - small) / 2;` ` ` `document.write(a + ` `" "` `+ b);` ` ` `return` `;` ` ` `}` ` ` `}` ` ` `}` ` ` `// If no pair exists` ` ` `document.write(-1);` ` ` `}` ` ` `// Driver Code` ` ` ` ` `var` `n = 7;` ` ` `solve(n);` `// This code contributed by aashish1995` `</script>` |

**Output:**

4 3

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