Given a number **N**, the task is to check if this number can be represented as the difference of two perfect squares or not.

**Examples:**

Input:N = 3

Output:Yes

Explanation:

2^{2}– 1^{1}= 3

Input:N = 10

Output:No

**Approach:** The idea is that all the numbers can be represented as the difference of two squares except the numbers which yield the remainder of 2 when divided by 4.

Let’s visualize this by taking a few examples:

N = 4 => 4^{2}- 0^{2}N = 6 => Can't be expressed as 6 % 4 = 2 N = 8 => 3^{2}- 1^{2}N = 10 => Can't be expressed as 10 % 4 = 2 N = 11 => 6^{2}- 5^{2}N = 12 => 4^{2}- 2^{2}and so on...

Therefore, the idea is to simply check the remainder for 2 when the given number is divided by 4.

Below is the implementation of the above approach:

## C++

`// C++ program to check whether a number ` `// can be represented by the difference ` `// of two squares ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to check whether a number ` `// can be represented by the difference ` `// of two squares ` `bool` `difSquare(` `int` `n) ` `{ ` ` ` `// Checking if n % 4 = 2 or not ` ` ` `if` `(n % 4 != 2) { ` ` ` `return` `true` `; ` ` ` `} ` ` ` ` ` `return` `false` `; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` ` ` `int` `n = 45; ` ` ` `if` `(difSquare(n)) { ` ` ` `cout << ` `"Yes\n"` `; ` ` ` `} ` ` ` `else` `{ ` ` ` `cout << ` `"No\n"` `; ` ` ` `} ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to check whether a number ` `// can be represented by the difference ` `// of two squares ` `import` `java.util.*; ` ` ` `class` `GFG{ ` ` ` `// Function to check whether a number ` `// can be represented by the difference ` `// of two squares ` `static` `boolean` `difSquare(` `int` `n) ` `{ ` ` ` ` ` `// Checking if n % 4 = 2 or not ` ` ` `if` `(n % ` `4` `!= ` `2` `) ` ` ` `{ ` ` ` `return` `true` `; ` ` ` `} ` ` ` `return` `false` `; ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `int` `n = ` `45` `; ` ` ` ` ` `if` `(difSquare(n)) ` ` ` `{ ` ` ` `System.out.print(` `"Yes\n"` `); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `System.out.print(` `"No\n"` `); ` ` ` `} ` `} ` `} ` ` ` `// This code is contributed by shivanisinghss2110 ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to check whether a number ` `# can be represented by the difference ` `# of two squares ` ` ` `# Function to check whether a number ` `# can be represented by the difference ` `# of two squares ` `def` `difSquare(n): ` ` ` ` ` `# Checking if n % 4 = 2 or not ` ` ` `if` `(n ` `%` `4` `!` `=` `2` `): ` ` ` `return` `True` ` ` `return` `False` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` ` ` `n ` `=` `45` ` ` ` ` `if` `(difSquare(n)): ` ` ` `print` `(` `"Yes"` `) ` ` ` `else` `: ` ` ` `print` `(` `"No"` `) ` ` ` `# This code is contributed by mohit kumar 29 ` |

*chevron_right*

*filter_none*

## C#

`// C# program to check whether a number ` `// can be represented by the difference ` `// of two squares ` `using` `System; ` `class` `GFG{ ` ` ` `// Function to check whether a number ` `// can be represented by the difference ` `// of two squares ` `static` `bool` `difSquare(` `int` `n) ` `{ ` ` ` ` ` `// Checking if n % 4 = 2 or not ` ` ` `if` `(n % 4 != 2) ` ` ` `{ ` ` ` `return` `true` `; ` ` ` `} ` ` ` `return` `false` `; ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main() ` `{ ` ` ` `int` `n = 45; ` ` ` ` ` `if` `(difSquare(n)) ` ` ` `{ ` ` ` `Console.Write(` `"Yes\n"` `); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `Console.Write(` `"No\n"` `); ` ` ` `} ` `} ` `} ` ` ` `// This code is contributed by Nidhi_biet ` |

*chevron_right*

*filter_none*

**Output:**

Yes

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.

## Recommended Posts:

- Check whether a number can be represented by sum of two squares
- Check whether a number can be represented by the product of two squares
- Check whether a number can be represented as difference of two consecutive cubes
- Check if N can be represented as sum of squares of two consecutive integers
- Count elements in an Array that can be represented as difference of two perfect squares
- Check whether a number can be represented as sum of K distinct positive integers
- Check if given number can be represented as sum of two great numbers
- Check if a number can be represented as sum of two consecutive perfect cubes
- Check if all nodes of the Binary Tree can be represented as sum of two primes
- Number of ways in which N can be represented as the sum of two positive integers
- Check if a given number can be represented in given a no. of digits in any base
- Check if a number can be represented as a sum of 2 triangular numbers
- Check if a number can be represented as sum of non zero powers of 2
- Count all subarrays whose sum can be split as difference of squares of two Integers
- Count array elements that can be represented as sum of at least two consecutive array elements
- Check if N can be represented as sum of integers chosen from set {A, B}
- Find the smallest positive number which can not be represented by given digits
- Smallest number greater than n that can be represented as a sum of distinct power of k
- Check if difference of areas of two squares is prime
- Count numbers which can be represented as sum of same parity primes

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.