Skip to content
Related Articles

Related Articles

Improve Article

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

  • Last Updated : 09 Aug, 2021

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




// 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;
}

Java




// 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

Python3




# 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):
    # Initialize 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))

C#




// 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

Javascript




<script>
 
    // Javascript implementation to count the
    // number of elements which can be
    // represented as the difference
    // of the two square
     
    // Function to count of such elements
    // in the array which can be represented
    // as the difference of the two squares
    function count_num(arr, n)
    {
        // Initialize count
        let count = 0;
 
        // Loop to iterate
        // over the array
        for (let 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++;
 
        document.write(count);
        return 0;
    }
 
    let arr = [ 1, 2, 3 ];
    let n = arr.length;
    count_num(arr, n);
 
</script>
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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :