Count elements in an Array that can be represented as difference of two perfect squares

Given an array arr[], the task is to count the number of elements in the array that can be represented as in the form of the difference of two perfect square numbers. a^2 - b^2

Examples:

Input: arr[] = {1, 2, 3}
Output: 2
Explanation:
There are two such elements that can be represented as
difference of square of two numbers –
Element 1 – 1^2 - 0^2 = 1
Element 3 – 2^2 - 1^2 = 3
Therefore, Count of such elements is 2.

Input: arr[] = {2, 5, 6}
Output: 1
Explanation:
There is only one such element. That is –
Element 5 – 3^2 - 2^2 = 9 - 4 = 5
Therefore, Count of such elements is 1.

Approach: The key observation in the problem is numbers which can be represented as the difference of the squares of two numbers never yield 2 as the remainder when divided by 4.



For Example:

N = 4 => 4^2 - 0^2
N = 6 => Can’t be represented as 6 \% 4 = 2
N = 8 => 3^2 - 1^2
N = 10 => Can’t be represented as 10 \% 4 = 2

Therefore, iterate over the array and count the number of such elements in the array.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to count the
// number of elements which can be
// represented as the difference
// of the two square
  
#include <bits/stdc++.h>
  
using namespace std;
  
// Function to count of such elements
// in the array which can be represented
// as the difference of the two squares
int count_num(int arr[], int n)
{
    // Initialize count
    int count = 0;
  
    // Loop to iterate
    // over the array
    for (int i = 0; i < n; i++)
  
        // Condition to check if the
        // number can be represented
        // as the difference of squares
        if ((arr[i] % 4) != 2)
            count++;
  
    cout << count;
    return 0;
}
  
// Driver code
int main()
{
    int arr[] = { 1, 2, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);
    count_num(arr, n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to count the 
// number of elements which can be 
// represented as the difference 
// of the two square 
class GFG{
  
// Function to count of such elements 
// in the array which can be represented 
// as the difference of the two squares 
static void count_num(int []arr, int n) 
      
    // Initialize count 
    int count = 0
      
    // Loop to iterate 
    // over the array 
    for(int i = 0; i < n; i++) 
    {
         
       // Condition to check if the 
       // number can be represented 
       // as the difference of squares 
       if ((arr[i] % 4) != 2
           count++; 
    }
    System.out.println(count); 
      
// Driver code 
public static void main (String[] args)
    int arr[] = { 1, 2, 3 }; 
    int n = arr.length; 
      
    count_num(arr, n); 
}
  
// This code is contributed by AnkitRai01

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to count the
# number of elements in the array
# which can be represented as difference 
# of the two elements 
  
# Function to return the
# Count of required count 
# of such elements
def count_num(arr, n):
    # Intialize count 
    count = 0
      
    # Loop to iterate over the 
    # array of elements
    for i in arr:
          
        # Condition to check if the 
        # number can be represented
        # as the difference 
        # of two squares
        if ((i % 4) != 2):
            count = count + 1
      
    return count
  
# Driver Code
if __name__ == "__main__":
    arr = [1, 2, 3]
    n = len(arr)
      
    # Function Call
    print(count_num(arr, n))

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to count the 
// number of elements which can be 
// represented as the difference 
// of the two square 
using System;
class GFG{
  
// Function to count of such elements 
// in the array which can be represented 
// as the difference of the two squares 
static void count_num(int []arr, int n) 
      
    // Initialize count 
    int count = 0; 
      
    // Loop to iterate 
    // over the array 
    for(int i = 0; i < n; i++) 
    {
          
        // Condition to check if the 
        // number can be represented 
        // as the difference of squares 
        if ((arr[i] % 4) != 2) 
            count++; 
    }
    Console.WriteLine(count); 
      
// Driver code 
public static void Main(string[] args)
    int []arr = { 1, 2, 3 }; 
    int n = arr.Length; 
      
    count_num(arr, n); 
}
  
// This code is contributed by shivanisinghss2110

chevron_right


Output:

2

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.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.