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

Input:N = 7Output:4 3Explanation:

The two integers 4 and 3 can be represented as4.^{2}– 3^{2}= 7

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

**Output:**

4 3

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.