# Javascript Program to Efficiently compute sums of diagonals of a matrix

Given a 2D square matrix, find the sum of elements in Principal and Secondary diagonals. For example, consider the following 4 X 4 input matrix.

A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33

The primary diagonal is formed by the elements A00, A11, A22, A33.

- Condition for Principal Diagonal: The row-column condition is row = column.

The secondary diagonal is formed by the elements A03, A12, A21, A30. - Condition for Secondary Diagonal: The row-column condition is row = numberOfRows – column -1.

**Examples :**

Input : 4 1 2 3 4 4 3 2 1 7 8 9 6 6 5 4 3 Output : Principal Diagonal: 16 Secondary Diagonal: 20 Input : 3 1 1 1 1 1 1 1 1 1 Output : Principal Diagonal: 3 Secondary Diagonal: 3

**Method 1 (O(n ^ 2) :**

In this method, we use two loops i.e. a loop for columns and a loop for rows and in the inner loop we check for the condition stated above:

## Javascript

`<script>` `// A simple Javascript program to find sum of diagonals` ` ` `const MAX = 100;` ` ` `void printDiagonalSums(mat, n)` `{` ` ` `let principal = 0, secondary = 0;` ` ` `for` `(let i = 0; i < n; i++) {` ` ` `for` `(let j = 0; j < n; j++) {` ` ` ` ` `// Condition for principal diagonal` ` ` `if` `(i == j)` ` ` `principal += mat[i][j];` ` ` ` ` `// Condition for secondary diagonal` ` ` `if` `((i + j) == (n - 1))` ` ` `secondary += mat[i][j];` ` ` `}` ` ` `}` ` ` ` ` `document.write(` `"Principal Diagonal:"` `+ principal + ` `"<br>"` `);` ` ` `document.write(` `"Secondary Diagonal:"` `+ secondary + ` `"<br>"` `);` `}` ` ` `// Driver code` ` ` `let a = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], ` ` ` `[ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ];` ` ` `printDiagonalSums(a, 4);` ` ` `// This code is contributed by subhammahato348.` `</script>` |

**Output:**

Principal Diagonal:18 Secondary Diagonal:18

This code takes O(n^2) time and O(1) auxiliary space

**Method 2 (O(n) :**

In this method we use one loop i.e. a loop for calculating sum of both the principal and secondary diagonals:

## Javascript

`<script>` ` ` `// An efficient Javascript program to find` `// sum of diagonals` ` ` `function` `printDiagonalSums(mat,n)` ` ` `{` ` ` `let principal = 0, secondary = 0;` ` ` `for` `(let i = 0; i < n; i++) {` ` ` `principal += mat[i][i];` ` ` `secondary += mat[i][n - i - 1];` ` ` `}` ` ` ` ` `document.write(` `"Principal Diagonal:"` ` ` `+ principal+` `"<br>"` `);` ` ` ` ` `document.write(` `"Secondary Diagonal:"` ` ` `+ secondary);` ` ` `}` ` ` ` ` `// Driver code` ` ` ` ` `let a = [[ 1, 2, 3, 4 ],` ` ` `[5, 6, 7, 8 ],` ` ` `[ 1, 2, 3, 4 ],` ` ` `[ 5, 6, 7, 8 ]];` ` ` ` ` `printDiagonalSums(a, 4);` ` ` `// This code is contributed Bobby` ` ` `</script>` |

**Output :**

Principal Diagonal:18 Secondary Diagonal:18

This code takes O(n) time and O(1) auxiliary space

Please refer complete article on Efficiently compute sums of diagonals of a matrix for more details!