Friday, September 5, 2025
HomeLanguagesJavaJava Program to Compute the Sum of Diagonals of a Matrix

Java Program to Compute the Sum of Diagonals of a Matrix

For a given 2D square matrix of size N*N, the task is to find the sum of elements in the Principal and Secondary diagonals. For example, analyze the following 4 × 4 input matrix.

a00 a01 a02 a03
a10 a11 a12 a13
a20 a21 a22 a23
a30 a31 a32 a33

Example:

Input 1 :  6 7 3 4
               8 9 2 1
              1 2 9 6
              6 5 7 2
Output 1 : Principal Diagonal: 26
                 Secondary Diagonal: 14
 

Input 2 : 2 2 2
              1 1 1
             3 3 3
Output 2 :  Principal Diagonal: 6
                  Secondary Diagonal: 6

 

Intuition:

1. The principal diagonal is constituted by the elements a00, a11, a22, a33, and the row-column condition for the principal diagonal is: row = column

2. However, the secondary diagonal is constituted by the elements a03, a12, a21, a30, and the row-column condition for the Secondary diagonal is: row + column = N – 1

Naive approach: Use two nested loop to iterate over 2D matrix and check for the above condition for principal diagonal and secondary diagonal.

Below is the implementation of the above approach.

Java




// Java Program to Find the Sum of Diagonals of a Matrix
 
// Importing input output classes
import java.io.*;
 
// Main Class
public class GFG {
   
    // To calculate Sum of Diagonals
    static void Sum_of_Diagonals1(int[][] matrix, int N)
    {
        // Declaring and initializing two variables to zero
        // initially for primary and secondary diagonal
        // count
        int Pd = 0, Sd = 0;
   
        // Two Nested for loops for iteration over a matrix
        // Outer loop for rows
        for (int k = 0; k < N; k++) {
   
            // Inner loop for columns
            for (int l = 0; l < N; l++) {
   
                // Condition for the principal
                // diagonal
                if (k == l)
                    Pd += matrix[k][l];
   
                // Condition for the secondary diagonal
                if ((k + l) == (N - 1))
                    Sd += matrix[k][l];
            }
        }
   
        // Print and display the sum of primary diagonal
        System.out.println("Sum of Principal Diagonal:"
                           + Pd);
        // Print and display the sum of secondary diagonal
        System.out.println("Sum of Secondary Diagonal:"
                           + Sd);
    }
 
   
    // Main driver method
    static public void main(String[] args)
    {
 
        // Input integer array
        // Custom entries in an array
        int[][] b = { { 8, 2, 13, 4 },
                      { 9, 16, 17, 8 },
                      { 1, 22, 3, 14 },
                      { 15, 6, 17, 8 } };
 
        // Passing the array as an argument to the
        // function defined above
        Sum_of_Diagonals1(b, 4);
       
    }
}


Output

Sum of Principal Diagonal:35
Sum of Secondary Diagonal:58

Time complexity: O(N2)
Auxiliary space: O(1)

Efficient approach: The idea to find the sum of values of principal diagonal is to iterate to N and use the value of matrix[row][row] for the summation of principal diagonal and to find the sum of values of secondary diagonal is to use the value of matrix[row][N – (row + 1)] for summation.

Below is the implementation of the above approach.

Java




// Java Program to Find the Sum of Diagonals of a Matrix
 
// Importing input output classes
import java.io.*;
 
// Main Class
public class GFG {
   
    // To calculate Sum of Diagonals
    static void Sum_of_Diagonals(int[][] matrix, int N)
    {
        // Declaring and initializing two variables to zero
        // initially for primary and secondary diagonal
        // count
        int Pd = 0, Sd = 0;
        for(int i=0; i<N; i++)
        {
              // Since for primary diagonal sum the value of
            // row and column are equal
              Pd += matrix[i][i];
           
            // For secondary diagonal sum values of i'th index
            // and j'th index sum is equal to n-1 at each
            // stage of matrix
              Sd += matrix[i][N-(i+1)];
        }
         
       
        // Print and display the sum of primary diagonal
        System.out.println("Sum of Principal Diagonal:"
                           + Pd);
        // Print and display the sum of secondary diagonal
        System.out.println("Sum of Secondary Diagonal:"
                           + Sd);
    }
 
   
    // Main driver method
    static public void main(String[] args)
    {
 
        // Input integer array
        // Custom entries in an array
        int[][] b = { { 8, 2, 13, 4 },
                      { 9, 16, 17, 8 },
                      { 1, 22, 3, 14 },
                      { 15, 6, 17, 8 } };
 
        // Passing the array as an argument to the
        // function defined above
        Sum_of_Diagonals(b, 4);
    }
}


Output

Sum of Principal Diagonal:35
Sum of Secondary Diagonal:58

Time complexity: O(N)
Auxiliary space: O(1)

RELATED ARTICLES

Most Popular

Dominic
32264 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6634 POSTS0 COMMENTS
Nicole Veronica
11801 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11863 POSTS0 COMMENTS
Shaida Kate Naidoo
6750 POSTS0 COMMENTS
Ted Musemwa
7025 POSTS0 COMMENTS
Thapelo Manthata
6701 POSTS0 COMMENTS
Umr Jansen
6718 POSTS0 COMMENTS