# Sum of both diagonals of a spiral odd-order square matrix

We have given a spiral matrix of odd-order, in which we start with the number 1 as center and moving to the right in a clockwise direction.

Examples :

```Input : n = 3
Output : 25
Explanation : spiral matrix =
7 8 9
6 1 2
5 4 3
The sum of diagonals is 7+1+3+9+5 = 25

Input : n = 5
Output : 101
Explanation : spiral matrix of order 5
21 22 23 23 25
20  7  8  9 10
19  6  1  2 11
18  5  4  3 12
17 16 15 14 13
The sum of diagonals is 21+7+1+3+13+
25+9+5+17 = 101
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

If we take a closer look at the spiral matrix of n x n, we can notice that top right corner element has value n2. Value of top left corner is (n^2) – (n-1) [Why? not that we move ant-clockwise in spiral matrix, therefore we get value of top left after subtracting n-1 from top right]. Similarly values of bottom left corner is (n^2) – 2(n-1) and bottom right corner is (n^2) – 3(n-1). After adding all the four corners we get 4[(n^2)] – 6(n-1).

Let f(n) be sum of diagonal elements for a n x n matrix. Using above observations, we can recursively write f(n) as:

`f(n) = 4[(n^2)] – 6(n-1) + f(n-2)  `

From above relation, we can find the sum of all diagonal elements of a spiral matrix with the help of iterative method.

```spiralDiaSum(n)
{
if (n == 1)
return 1;

// as order should be only odd
// we should pass only odd-integers
return (4*n*n - 6*n + 6 + spiralDiaSum(n-2));
}
```

Below is the implementation.

## C++

 `// C++ program to find sum of ` `// diagonals of spiral matrix ` `#include ` `using` `namespace` `std; ` ` `  `// function returns sum of diagonals ` `int` `spiralDiaSum(``int` `n) ` `{ ` `    ``if` `(n == 1) ` `        ``return` `1; ` ` `  `    ``// as order should be only odd ` `    ``// we should pass only odd-integers ` `    ``return` `(4*n*n - 6*n + 6 + spiralDiaSum(n-2)); ` `} ` ` `  `// Driver program ` `int` `main() ` `{ ` `    ``int` `n = 7; ` `    ``cout <<  spiralDiaSum(n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find sum of ` `// diagonals of spiral matrix ` ` `  `class` `GFG  ` `{ ` `    ``// function returns sum of diagonals ` `    ``static` `int` `spiralDiaSum(``int` `n) ` `    ``{ ` `        ``if` `(n == ``1``) ` `            ``return` `1``; ` `     `  `        ``// as order should be only odd ` `        ``// we should pass only odd-integers ` `        ``return` `(``4` `* n * n - ``6` `* n + ``6` `+  ` `                     ``spiralDiaSum(n - ``2``)); ` `    ``} ` `     `  `    ``// Driver program to test ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{ ` `        ``int` `n = ``7``; ` `        ``System.out.print(spiralDiaSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `# Python3 program to find sum of ` `# diagonals of spiral matrix ` ` `  `# function returns sum of diagonals ` `def` `spiralDiaSum(n): ` `     `  `    ``if` `n ``=``=` `1``: ` `        ``return` `1` ` `  `    ``# as order should be only odd ` `    ``# we should pass only odd ` `    ``# integers ` `    ``return` `(``4` `*` `n``*``n ``-` `6` `*` `n ``+` `6` `+` `               ``spiralDiaSum(n``-``2``)) ` `     `  `# Driver program ` `n ``=` `7``; ` `print``(spiralDiaSum(n)) ` ` `  `# This code is contributed by Anant Agarwal. `

## C#

 `// C# program to find sum of ` `// diagonals of spiral matrix ` `using` `System; ` ` `  `class` `GFG  { ` `     `  `    ``// function returns sum of diagonals ` `    ``static` `int` `spiralDiaSum(``int` `n) ` `    ``{ ` `        ``if` `(n == 1) ` `            ``return` `1; ` `     `  `        ``// as order should be only odd ` `        ``// we should pass only odd-integers ` `        ``return` `(4 * n * n - 6 * n + 6 +  ` `                ``spiralDiaSum(n - 2)); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main (String[] args)  ` `    ``{ ` `        ``int` `n = 7; ` `        ``Console.Write(spiralDiaSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by parashar... `

## PHP

 ` `

Output :

```261
```

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.

My Personal Notes arrow_drop_up

Improved By : parashar, vt_m

Article Tags :
Practice Tags :

3

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.