# 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

Output

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

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

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Previous
Next