# Check whether a number can be represented as difference of two squares

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 = 3Output:YesExplanation:

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

Input:N = 10Output: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 => 2^{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;` `}` |

## 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` |

## 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` |

## 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` |

## Javascript

`<script>` `// Javascript 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` `function` `difSquare(n)` `{` ` ` ` ` `// Checking if n % 4 = 2 or not` ` ` `if` `(n % 4 != 2)` ` ` `{` ` ` `return` `true` `;` ` ` `}` ` ` `return` `false` `;` `}` `// Driver code` `var` `n = 45;` `if` `(difSquare(n))` `{` ` ` `document.write(` `"Yes\n"` `);` `}` `else` `{` ` ` `document.write(` `"No\n"` `);` `}` `// This code is contributed by Rajput-Ji` `</script>` |

**Output:**

Yes

**Time complexity**: O(1) because constant operations have been done**Auxiliary space**: O(1)