# Java Program to Compute the Sum of Diagonals of a Matrix

• Last Updated : 26 Aug, 2022

For a given 2D square matrix of size N*N, the task is to find the sum of elements in the Principle 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 princliple 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)

My Personal Notes arrow_drop_up